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;
}