10.5 Karakter Dizileri (Strings)
10.5 Karakter Dizileri (Strings)
C dilinde, karakter dizileri oldukça sık kullanılır. Sadece karakter dizilerine özel olarak, karakter dizilerinin sonuna sonlandırcı karakter olarak adlandırılan bir simge eklenir. Sonlandırcı karakter, işlemlerin hızlı ve etkin bir biçimde yapılabilmesine olanak sağlar[2].
Sonlandırıcı karakter:
- dizinin bittiği yeri gösterir,
- ASCII tablosunun sıfır numaralı ('\0') karakteridir.
Karakter dizilerine iki şekilde başlangıç değeri verilebilir.
1 |
char s[7] = {'d','e','n','e','m','e','\0'}; |
yada
1 |
char s[7] = "deneme"; |
Birinci tanımlamada sonlandırıcı karakter programcı tarafından konmalıdır. Ikinci tanımlamada ise buna gerek yoktur. Çünkü, sonlandırıcı karakter bu atamayla, derleyici tarafından eklenir.
NOT
|
Karakter dizileri gets() fonksiyonu ile klavyeden okunabilir.
1 2 3 |
char ad[20]; ... gets(ad); |
Karakter dizleri veya katarlar Bölüm 12’de daha ayrıntılı işlenecektir. Burada sadece iki basit örnek sunulmuştur. Program 10.6’da bir karakter dizisinin uzunluğunun nasıl bulunduğu, Program 10.7’de ise bir karakter dizisinin tersyüz edilişi gösterilmiştir. İnceleyiniz.
Program 10.6: Bir karakter dizisinin uzunluğunu bulur
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/* 09prg06.c: Bir karakter dizisinin uzunluğunu bulur */ #include <stdio.h> int main(void) { char s[40]; int k = 0; /* diziyi oku */ printf("Bir seyler yazin : "); gets(s); /* sonlandırıcı karaktere kadar karakterleri say */ while( s[k]!='\0' ) k++; printf("Dizinin uzunlugu : %d\n",k); return 0; } |
ÇIKTI
1 2 |
Birseyler yazin : Gazintep Universitesi Dizinin uzunlugu : 21 |
Program 10.7: Bir karakter dizisinin tersini bulur
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/* 09prg07.c: Bir karakter dizisini tersyüz eder */ #include <stdio.h> int main(void) { char s[40], gecici; int i, n; /* diziyi oku */ printf("Bir seyler yazin : "); gets(s); /* sonlandırıcı karaktere kadar */ for(n=0; s[n] != '\0'; n++) ; for(i=0; i<n/2; i++){ gecici = s[n-i-1]; s[n-i-1] = s[i]; s[i] = gecici; } printf("Tersi : %s\n",s); return 0; } |
ÇIKTI
1 2 3 |
Bir seyler yazin : Deneme Tersi : emeneD |