C Programlama - String Fonksiyonları ve Uygulama Soruları

1. Bir karakter dizisinin uzunluğunu `strlen` fonksiyonunu kullanarak bulan bir C programı yazın.
#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Merhaba, dünya!";
    int len = strlen(str);
    printf("Dizinin uzunluğu: %d\n", len);
    return 0;
}
            
2. İki karakter dizisini `strcmp` fonksiyonuyla karşılaştıran bir C programı yazın.
#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "Selam";
    char str2[] = "selam";
    int result = strcmp(str1, str2);
    if(result < 0) {
        printf("str1, str2'den küçük.\n");
    } else if(result > 0) {
        printf("str1, str2'den büyük.\n");
    } else {
        printf("str1 ve str2 eşit.\n");
    }
    return 0;
}
            
3. `strcat` fonksiyonunu kullanarak iki diziyi birleştiren bir C programı yazın.
#include <stdio.h>
#include <string.h>

int main() {
    char str1[50] = "Merhaba ";
    char str2[] = "Dünya!";
    strcat(str1, str2);
    printf("Birleştirilmiş dize: %s\n", str1);
    return 0;
}
            
4. `strncpy` fonksiyonu ile bir dizinin ilk 5 karakterini kopyalayan bir C programı yazın.
#include <stdio.h>
#include <string.h>

int main() {
    char src[] = "Merhaba Dünya";
    char dest[10];
    strncpy(dest, src, 5);
    dest[5] = '\0';  // Sonuna NULL karakteri ekleyin
    printf("Kopyalanan dize: %s\n", dest);
    return 0;
}
            
5. Bir dizideki belirli bir karakteri `strchr` fonksiyonu ile bulan bir C programı yazın.
#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "C programlama";
    char *pos = strchr(str, 'a');
    if (pos != NULL) {
        printf("Karakter bulundu: %s\n", pos);
    } else {
        printf("Karakter bulunamadı.\n");
    }
    return 0;
}
            
6. `strrchr` fonksiyonunu kullanarak bir dizideki belirli bir karakterin son geçtiği yerin adresini bulan bir C programı yazın.
#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "merhaba dünya";
    char *pos = strrchr(str, 'a');
    if (pos != NULL) {
        printf("Son geçen 'a' karakteri: %s\n", pos);
    } else {
        printf("Karakter bulunamadı.\n");
    }
    return 0;
}
            
7. `strstr` fonksiyonunu kullanarak bir alt string'in bulunduğu yerin adresini bulan bir C programı yazın.
#include <stdio.h>
#include <string.h>

int main() {
    char text[] = "C dilinde programlama yapıyorum.";
    char *search = "program";
    char *pos = strstr(text, search);
    if (pos != NULL) {
        printf("Alt dize bulundu: %s\n", pos);
    } else {
        printf("Alt dize bulunamadı.\n");
    }
    return 0;
}
            
8. `atoi` fonksiyonunu kullanarak bir string'i tamsayıya dönüştüren bir C programı yazın.
#include <stdio.h>
#include <stdlib.h>

int main() {
    char str[] = "12345";
    int num = atoi(str);
    printf("String olarak: %s\n", str);
    printf("Tamsayı olarak: %d\n", num);
    return 0;
}
            
9. `atof` fonksiyonu ile bir string'i ondalıklı sayıya dönüştüren bir C programı yazın.
#include <stdio.h>
#include <stdlib.h>

int main() {
    char str[] = "3.14159";
    double num = atof(str);
    printf("String olarak: %s\n", str);
    printf("Ondalıklı sayı olarak: %f\n", num);
    return 0;
}
            
10. `strcpy` fonksiyonu ile bir karakter dizisini başka bir dizinin içine kopyalayan bir C programı yazın. Ancak, hedef dizinin boyutunu aşmamak için kaynak dizinin uzunluğunu kontrol edin ve dizinin taşmasını önleyin.
#include <stdio.h>
#include <string.h>

int main() {
    char src[] = "Merhaba, bu çok uzun bir dizedir!";
    char dest[20];

    if (strlen(src) < sizeof(dest)) {
        strcpy(dest, src);
        printf("Kopyalanmış dize: %s\n", dest);
    } else {
        printf("Hedef dizi boyutu yetersiz, kopyalama yapılamaz.\n");
    }

    return 0;
}
    
11. `strncpy` fonksiyonunu kullanarak bir dizinin yalnızca ilk 10 karakterini kopyalayacak bir C programı yazın. Ayrıca, kopyalanan dizinin sonuna doğru bir NULL karakteri ekleyin.
#include <stdio.h>
#include <string.h>

int main() {
    char src[] = "Bu örnek bir uzun dizidir";
    char dest[15];

    strncpy(dest, src, 10);
    dest[10] = '\0';  // NULL karakter eklemek

    printf("Kopyalanan dize: %s\n", dest);
    return 0;
}
    
12. `strcat` fonksiyonunu kullanarak iki diziyi birleştiren bir C programı yazın. Birleştirilmiş dizinin uzunluğunu kontrol edin ve dizinin taşmasını önlemek için hedef dizisinin boyutunu sınırlayın.
#include <stdio.h>
#include <string.h>

int main() {
    char str1[30] = "Merhaba, ";
    char str2[] = "dünya!";
    
    if (strlen(str1) + strlen(str2) < sizeof(str1)) {
        strcat(str1, str2);
        printf("Birleştirilmiş dize: %s\n", str1);
    } else {
        printf("Birleştirilen dize hedef boyutu aşıyor.\n");
    }

    return 0;
}
    
13. `strcmp` fonksiyonunu kullanarak iki dizinin büyük/küçük harfe duyarsız karşılaştırmasını yaparak, dizelerin alfabetik sırasını belirleyin.
#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "kış";
    char str2[] = "Kış";

    if (strcasecmp(str1, str2) == 0) {
        printf("Dizeler eşittir (büyük/küçük harf duyarsız).\n");
    } else {
        printf("Dizeler eşit değil.\n");
    }

    return 0;
}
    
14. `strstr` fonksiyonu ile bir dizide, belirli bir alt dizenin bulunduğu ilk yeri bulan bir C programı yazın ve bu yeri ekrana yazdırın.
#include <stdio.h>
#include <string.h>

int main() {
    char text[] = "C programlama dilinde string işlemleri önemlidir.";
    char *search = "string";
    
    char *pos = strstr(text, search);
    if (pos != NULL) {
        printf("Alt dize bulundu: %s\n", pos);
    } else {
        printf("Alt dize bulunamadı.\n");
    }

    return 0;
}