Stringler harfler,rakamlar veya bazı semboller olan text bilgileri saklamak için kullanılır. Stringler char tipinde karakter dizileridir. Stringler C'de <string.h> kütüphanesi içindedir.C'de stringler için özel bir tip yoktur.Bu yüzden stringlere sizi olarak bakılır.Genel olarak stringleri
char string_adi[eleman_sayısı]
biçiminde gösteriyoruz.Örneğin kullanıcının girmesini istiyorsak
char isim[20]
şeklinde programa başlarken belirtmeliyiz.
Stringlere Başlangıç Değer Atama
Stringlere dizi olarak baktığımız için
onlara da diğer dizilerdeki gibi başlangıç değeri atayabiliriz. Yanlız
stringlere başlangıç değer atarken bir şeye dikkat etmeliyiz. Stringlere
başlangıç değeri atarken stringin uzunluğuna dikkat etmeliyiz çünkü stringlerin
sonunda bir '\0'(NULL) karakteri belirtmez veya uzunluğu az verirsek
yazdırılırken bellek yanlış bilgileri yazar.
char isim[4]={'a','y','s','e','\0'};
char isim[4]='ayse' ;
Yukarıda gösterilen iki bildirim aynı anlama gelmektedir.
Bir karakter dizisinin kaç elemanlı olduğunu
belirtmezsek, başlangıçta bildirilen karakter sayısını dikkate alarak dizinin
eleman sayısının o kadar olduğunu varsayar.
char isim[ ]='ayse'; /* 4 elemanlı */
Stringler bazen ise bir pointer(işaretçi) ile
de gösterilir.
char *il="Balikesir"; yada
char *il;
il="Balikesir";
bu şekilde gösterebiliriz.
Çok Boyutlu Diziler
Elemanları string olan dizileri kolayca
oluşturabiliyoruz.Örneğin en uzunu 7 karakter olan 4 farklı isim bir dizide
şöyle toplanabilir.
char isim[4][8]={"Semra","Asli";"Leyla";"Ayse"};
yada
char isim[
][8]={"Semra";"Asli";"Leyla";"Ayse"};
yada
char
*isim[4]={"Semra";"Asli";"Leyla";"Ayse"};
Bu tarz tanımlamalarda birinci
boyut(satır) dizinin eleman sayısını, ikinci boyut(sütun) her bir elemanın
sahip olabileceği maksimum karakter sayısını gösterir.
Puts() ve Gets() Komutları
Sadece stringler üzerinde işlem yapan
bu fonksiyonlar printf() ve scanf() fonksiyonları gibi klavyeden girilen
verileri okuma ve ekrana bilgi yazma amacıyla kullanılır.
main(){
char isim[20];
printf("\n isminizi
giriniz:");
gets(isim);
puts(isim);
}
Yukarıda verdiğim örnekte gets() ve puts() komutunun
kullanımını görmekteyiz.
Bu iki fonksiyon haricinde de stringlerde
kullandığımız bazı fonksiyonlar vardır.
1)strcpy() ve strncpy() fonksiyonları
strcpy() fonksiyonu ile
bir katarı başka bir katara kopyalamak için kullanıyoruz. Burada katar
boyutunun bir önemi yoktur.
Kullanımı
strcpy(s1,s2)
s1= hedef
s2= kaynak
strncpy() fonksiyonu is
strcpy() fonksiyonu ile aynı görevi görür. Fakat strcpy()’ den farklı olarak,
kaç karakter kopyalanacağı belirtir.
2)strcat() ve strncat() fonksiyonları
Bu fonksiyonlar verilen
iki katarı başka katarla birleştirmeye yarar. srtcat() fonksiyonu verilen
katarları tamamen birleştirirken, strncat() fonksiyonu belirli bir eleman
sayısına kadar birleştirir.
Kullanımları:
strcat(hedef,kaynak);
strncat(hedef,kaynak,sayı);
3)strcmp() ve srtncmp() fonksiyonları
strcmp() fonksiyonu
verilen iki katarı birbirleri ile karşılaştırmada kullanılır. Karşılaştırma
derken alfabetik sıraya göre karşılaştırmadan bahsediyorum. Eğer bu
karşılaştırmada iki katar birbirine eşit ise geriye 0, ilk katar büyük ise
geriye pozitif, tam tersi bir durum ise geriye negatif değer döndürür.
Kullanımı:
sonuç=strncmp(s1,s2)
sonuç,
-1 ise s2>s1
0 ise s2=s1
1 ise s1>s2 ‘ dir.
strncmp() fonksiyonu ise diğer fonksiyonumuz
gibi iki katarı karşılaştırır. Fakat bu fonksiyonda devreye uzunluk girer yani
bu fonksiyon verilen iki katarın istenilen sayıda karakterini birbiriyle
karşılaştırır.
Kullanımı:
sonuç=strncmp(s1,s2)
sonuç,
-1 ise s2>s1
0 ise s2=s1
1 ise s1>s2 ‘ dir.
4)strlen() fonksiyonu
Bu fonksiyon bir stringin
kaç karakterden oluştuğunu hesaplar. Sonuç olarak ise bir sayısal değer döndürür.
5)strstr() fonksiyonu
Bu fonksiyonu bir katar
içinde başka bir katarı aramak için kullanıyoruz. Bu fonksiyon aranılan katarı
bulduğu zaman bulduğu yerden sonraki katarı bir pointer değişkene yerleştirir.
Eğer bir eşleme olmazsa geriye herhangi bir sonuç dönmez ve pointer null olarak
kalır.
Kullanımı:
Pointer
değişken=strstr(str1,str2)
Str1=içinde arama yapılacak string(katar)
Str2=aranacak
string(katar)
NOT: Pointerlardan daha önce bahsetmediğim için pointerı
açıklayayım ilk önce pointer; hafızada başka bir adrese ait değeri tutan, başka
bir adresi gösteren değişkene denir.
6)strchr() ve strrchr() fonksiyonları
Bu fonksiyonlar strstr()
fonksiyonu gibi arama yaparken kullanılır. Ama katar içinde katar aramak için
değil, katar içinde tek bir karakteri aramak için kullanılır. strchr()
karakterin katar içindeki ilk konumunu verirken, strrchr() karakterin son kez
geçtiği adresi verir.
7)atoi() ve atof() fonksiyonları
Verilen bir katarı sayıya
dönüştürmek için kullandığımız fonksiyonlardır. Eğer katarı bir tamsayıya (int)
çevirmek istiyorsak atoi() fonksiyonunu, virgüllü bir sayıya (float) çevirmek
istiyorsak atof() fonksiyonunu kullanıyoruz. Bu fonksiyonlar c kütüphanesinde
<stdlib.h> kitaplığında bulunmaktadır. Bu fonksiyonları kullanırken
başlangıçta bu kitaplığı bildirmemiz gerekir.
8)strlwr() ve strupr() fonksiyonları
strlwr() fonksiyonunu bir
dizindeki büyük harfleri küçük harflere çevirmek için kullanıyoruz.
strupr() fonksiyonunu ise
bir dizindeki küçük harfleri büyük harfe çevirmekte kullanıyoruz.
9)isalnum() fonksiyonu
isalnum(karakter);
Eğer karakter bir harf
yada bir sayı ise fonksiyon değeri sıfırdan farklı; değilse sıfır olur.
10)isalpha() ve isdigit() fonksiyonları
int isalpha(karakter);
Eğer karakter bir harf
ise fonksiyon sıfırdan farklı bir değer verir; değilse sıfır değeri verir.
int isdigit(karakter);
Eğer karakter bir sayı
ise fonksiyon sıfırdan farklı bir değer verir; değilse sıfır değeri verir.
Hiç yorum yok:
Yorum Gönder