Bu yazıda, C programlamadaki stringler hakkında bilgi edineceksiniz. Bunları bildirmeyi, başlatmayı ve örnekler yardımıyla çeşitli I/O işlemleri için kullanmayı öğreneceksiniz.
C programlama dilinde, bir string, \0
ile sonlandırılmış bir karakter dizisidir.
Örneğin:
1 2 3 | char c[] = "merhaba dunya"; |
Derleyici, çift tırnak işaretleri içine alınmış bir dizi karakterle karşılaştığında, varsayılan olarak sonuna bir null karakteri \0
ekler.
m | e | r | h | a | b | a | d | u | n | y | a | \0 |
Bir string nasıl bildirilir?
Stringleri şu şekilde bildirebilirsiniz:
1 2 3 | char s[5]; |
s[0] | s[1] | s[2] | s[3] | s[4] |
Burada 5 karakterlik bir dizi tanımladık.
Stringler nasıl Başlatılır?
Dizeleri birkaç yolla başlatabilirsiniz.
1 2 3 4 5 6 7 8 9 | char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; |
c[0] | c[1] | c[2] | c[3] | c[4] |
a | b | c | d | \0 |
Başka bir örneğe bakalım:
1 2 3 | char c[5] = "abcde"; |
Burada 5 karakterlik bir karakter dizisine 6 karakter (son karakter ‘\ 0’) atamaya çalışıyoruz. Bu kötü ve bunu asla yapmamalısın.
Dizelere Değer Atama
Diziler ve stringler C’deki ikinci sınıf vatandaşlardır; bildirildikten sonra atama operatörünü desteklemezler. Örneğin,
1 2 3 4 | char c[100]; c = "C Tasarimkodlama"; // Error! assigment to expresssion with array type |
Yukarıdaki kod derlenmek istendiğinde bu şekilde bir hata alırız. Error! assigment to expresssion with array type
Kullanıcıdan String Okuma
Bir stringi okumak için scanf() fonksiyonu kullanabilirsiniz.
scanf() fonksiyonu, boşlukla (boşluk, satırsonu, sekme, vb.) karşılaşana kadar karakter dizisini okur.
Örnek:
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> int main() { char isim[20]; printf("Bir isim girin: "); scanf("%s", isim); printf("Adiniz: %s", isim); return 0; } |
Çıktı:
1 2 3 4 | Bir isim girin: Hayri Adiniz: Hayri |
Bir metin satırı nasıl okunur?
Bir dizge satırını okumak için fgets()
işlevini kullanabilirsiniz ve dizeyi görüntülemek için puts()
kullanabilirsiniz.
Örnek:
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> int main() { char isim[30]; printf("Isim Girin: "); fgets(isim, sizeof(isim), stdin); // string okuma printf("Ad: "); puts(isim); // string yazdirma return 0; } |
Çıktı:
1 2 3 4 | Isim Girin: Hayri Koc Ad: Hayri Koc |
Burada, kullanıcıdan bir string okumak için fgets() işlevini kullandık.
fgets(isim, sizeof(isim), stdlin); // string oku
sizeof(isim) değeri 30 olur. Dolayısıyla, girdi olarak isim dizgisinin boyutu olan en fazla 30 karakter alabiliriz.
İlginizi Çekebilir: C Dili Örnekleri
Stringleri Fonksiyonlara Aktarma
Stringler, dizilere benzer şekilde bir işleve aktarılabilir.
Örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h> void stringGoster(char str[]); int main() { char str[50]; printf("Birseyler girin: "); fgets(str, sizeof(str), stdin); stringGoster(str); // Fonksiyona parametre olarak geçirme. return 0; } void stringGoster(char str[]) { printf("Ciktiniz: "); puts(str); } |
1 2 3 4 | Birseyler girin: Merhaba dünya nasılsın Ciktiniz: Merhaba dünya nasılsın |
Stringler ve Pointerlar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h> int main(void) { char name[] = "Naim Süleymanoğlu"; printf("%c", *name); // Çıktı: N printf("%c", *(name+1)); // Çıktı: a printf("%c", *(name+5)); // Çıktı: S char *namePtr; namePtr = name; printf("%c", *namePtr); // Çıktı: N printf("%c", *(namePtr+1)); // Çıktı: a printf("%c", *(namePtr+5)); // Çıktı: s } |
1 2 3 | NaSNaS |
Yaygın Olarak Kullanılan String Fonksiyonları
- strlen() – bir stringin uzunluğunu hesaplar
- strcpy() – bir stringi diğerine kopyalar
- strcmp() – iki stringi karşılaştırır
- strcat() – iki stringi bitiştirir
Yorum Yap