T-K-O-T
c programming 13
C
C Programlama Dersi - XIII
Katarlar ( String )
Dizileri ve çok boyutlu dizileri gördük. Katar dediğimiz şey de aslında bir dizidir. Değişken tipi char yani karakter olan diziler, 'katar' ya da İngilizce adıyla 'string' olarak isimlendirilirler.
Katarları, şimdiye kadar gördüğümüz dizilerden ayıran, onları farklı kılan özellikleri yoktur. Örneğin bir tam sayı ( int ) dizisinde, tam sayıları saklarken; bir karakter dizisinde -yani katarda- karakterleri ( char ) saklarız. Bunun dışında bir fark bulunmaz. Ancak sık kullanılmalarına paralel olarak, katarlara ayrı bir önem vermek gerekir. Yaptığınız işlemler bilimsel ve hesaplama ağırlıklı değilse, hangi dili kullanırsanız kullanın, en çok içli dışlı olacağınız dizi tipi, karakter dizileridir. İsimler, adresler, kullanıcı adları, telefonlar vs... sözle ifade edilebilecek her şey için karakter dizilerini kullanırız. Katarlar işte bu yüzden önemlidir!
Karakter dizilerine İngilizce'de String dendiğini belirtmiştik. String; ip, bağ, kordon gibi anlamlar taşıyor. İlk olarak katar adını kim münasip gördü bilmiyorum. Muhtemelen bellek hücrelerine peşi sıra dizilen karakterlerin, vagonlara benzetilmesiyle, String değişken tipi Türkçe'ye katar olarak çevrildi. ( Arapça kökenli Türkçe bir kelime olan katar, 'tren' anlamına gelmektedir. ) Daha uygun bir isim verilebilirdi ya da sadece 'karakter dizisi' de diyebilirdik. Fakat madem genel kabul görmüş bir terim var; yazımız içersinde biz de buna uyacağız. String, katar ya da karakter dizisi hiç farketmez; hepsi aynı kapıya çıkıyor: Değişken tipi karakter olan dizi...
Katarlarda printf( ) ve scanf( ) Kullanımı
Katarlarla, daha önce gördüğümüz diziler arasında bir farkın olmadığını söylemtiştik. Bu sözümüz, teorik olarak doğru olsa da, pratikte ufak tefek farkları kapsam dışı bırakıyor. Hatırlayacaksınız, dizilerde elemanlara değer atama ya da onlardan değer okuma adım adım yapılan bir işlemdi. Genellikle bir döngü içersinde, her dizi elemanı için scanf( ) veya printf( ) fonksiyonunu çağırmamız gerekiyordu. Katarlar için böyle bir mecburiyet bulunmuyor. Tek bir kelimeyi, tek bir scanf( ) fonksiyonuyla okutabilir ve elemanlara otomatik değer atayabilirsiniz. Yani "Merhaba" şeklinde bir girdi-input gelirse, 3.dizi elemanı 'r' olurken; 6.dizi elemanı 'b' olur. Önceki dizilerde gördüğümüzün aksine, eleman atamaları kendiliğinden gerçekleşir. Aşağıdaki örneği inceleyelim:
#include<stdio.h> int main( void ) { char isim[30]; printf( "İsim giriniz> "); scanf( "%s", isim ); printf( "Girdiğiniz isim: %sn", isim ); return 0; }
Örneğimizde 30 karakterlik bir karakter dizisi tanımlayarak işe başladık. Bunun anlamı girdileri saklayacağımız 'isim' katarının 30 karakter boyutunda olacağıdır. Ancak bu katara en fazla 29 karakterlik bir kelime atanabilir. Çünkü katarlarda, kelime bitiminden sonra en az bir hücre boş bırakılmalıdır. Bu hücre 'Boş Karakter' ( NULL Character ) tutmak içindir. Boş karakter "