Karakter Kütüphanesi
Karakter Kütüphanesi
Karakterler, kaynak programları oluşturan blokların temelidir. Her program, anlamlı olarak gruplandığında, bilgisayar tarafından yerine getirilecek komutlar olarak algılanan karakter dizilerinden oluşur. Bir program, karakter sabitleri içerebilir. Bir karakter sabiti, tek tırnak içinde gösterilen bir int değeridir.
Karakter Dizisi Tanımlama
Bir string, tek bir birim olarak ele alınan karakter serileridir.
- Bir string, tek bir birim olarak ele alınan karakter serileridir.
- Bir stringe, stringin ilk karakterini gösteren bir gösterici ile erişilir.
- Bir stringin değeri, ilk karakterinin adresidir.
char meyve[ ]=”elma”; const char *meyvePtr=”elma”;
yukarıdaki kod satırlarından ikiside “elma” stringini bir değişkene atamaktadır.İlk kod satırı 5 elemanlı meyve dizisini oluşturur.(son eleman’/0′) İkinci bildirim hafızada “elema” stringini gösteren bir gösterici değişkeni olan meyvePtr oluşturur.
**** char *tipinde bir değişkene string bilgisi atandığında bazı derleyiciler stringi, hafızada stringin değiştirilemeyeceği bir konuma yerleştirir. Stringin tüm sistemlerde değişmesini sağlamak için, stringi karakter dizisine yerleştirin.
Bir string, scanf kullanılarak diziye atanabilir. ifade[20] dizisi
scanf(“%s”, ifade);
yukarıdaki kod satırı bir stringi karakter dizisi olan kelime[20] dizisine atamaktadır. Kullanıcı tarafından girilen string ifade içinde tutulur. ifade’nin bir dizi olduğuna, yani bir gösterici olduğuna, bu sebepten de ifade argümanıyla & kullanılmadığına dikkat ediniz. Bir karakter dizisinin yazdırılabilmesi için, dizi bir sonlandırıcı karakter null içermelidir..
Giriş-Çıkış Fonksiyonları
stdio.h kütüphanesi, karakter ve string verilerini ele alan bazı fonksiyonlar.
int getchar(void); //Girişteki karakteri alır ve tamsayı döndürür. char *gets(char *x); // Girişten aldığı karakteri, yeni satır ya da dosya sonu belirteciyle karşılaşıncaya kadar x dizisine alır. int putchar(int a); //a karakteri yazdırır. int puts(const char *s); //Yeni satır karakteri ile devam eden bir string yazdırır. int sprintf(char *dizi,const char *format,…); //printf ile denktir. Çıktılar ekran yerine dizi yollanır. int sscanf (char *dizi,const char *format,…); //scanf ile denktir. Girdiler klavye yerine dizi’den okunur.
getchar ve puts kullanımı
#include <stdio.h> int main( ) { char c, cumle[ 80 ]; int i = 0; puts( "Metin girişi yapınız: " ); while ( ( c = getchar( ) ) != '\n') cumle[ i++ ] = c; cumle[ i ] = '\0'; /* stringin sonunu null ekle */ puts( "\nGirilen metin:" ); puts( cumle ); return 0; }
Karakter Kütüphanesi Fonksiyonları
Karakter kütüphanesi, karakter verilerini işlemek ve test etmek için kullanışlı fonksiyon içerir. Her fonksiyon argüman olarak int ile temsil edilen bir karakter yada EOF alır.
EOF’in genellikle –1 değerine sahip olduğunu ve bazı donanım mimarilerinin, negatif değerlerin char değişkenler içinde depolanmasına izin vermediğine dikkat ediniz.
Aşağıda kütüphane fonksiyonları sıralanmıştır.
int isdigit ( int a); // a bir rakam ise 1 (doğru), değilse 0 (yanlış) değer döndürür. int isxdigit (int a); //a onaltılık sistemde bir rakamsa karakteri ise 1 değilse 0 döndürür int isalpha (int a); //a harf ise 1 değilse 0 döndürür int iaslnum (int a); // a bir harf yada rakamsa 1 değilse 0 döndürür. int islower ( int a); // a küçük bir harf ise 1 değilse 0 döndürür. int tolower ( int a); //a büyük harfse, a’yi küçük harfe çevirerek döndürür, değilse a’yı değiştirmeden döndürür. int isupper (int a); //a büyük harfse 1 değilse 0 döndürür. int toupper (int a); //a küçük harfse, a’yi büyük harfe çevirip döndürür,değilse a’yı değiştirmeden döndürür. int isspace (int a); //a (‘\n’),(‘ ‘),(‘\f ’),(‘\r’),(‘\t’) ,(‘\v’) karakterlerinden biriyse 1, değilse 0 döndürür. int iscntrl (int a); //a bir kontrol değişkeni ise 1,değilse 0 döndürür. int ispunct (int a); //a boşluk,rakam ya da harften başka bir yazdırma karakteri ise 1 ,değilse 0 döndürür. int isprint (int a); //a boşluk (‘ ‘) karakteri de dahil olmak üzere bir yazdırma karakteri ise 1, değilse 0 döndürür. int isgraph (int a); //a boşluk karakteri haricinde bir yazdırma değeri ise 1,değilse 0 döndürür.
Aşağıda yazılmış olan program incelendiğinde daha net anlaşılacaktır.
#include <stdio.h> #include <ctype.h> int main( ) { printf( "%s\n%s\n%s\n\n", "isdigit için: ", isdigit( '8' ) ? "8 bir rakamdır" : "8 bir rakam değildir ", isdigit( '#' ) ? "# bir rakamdır " : "# bir rakam değildir" ); printf( "%s\n%s\n%s\n%s\n%s\n\n", "isalpha için:", isalpha( 'A' ) ? "A bir harftir " : "A bir harf değildir", isalpha( 'b' ) ? "b bir harftir " : "b bir harf değildir ", isalpha( '&' ) ? "& bir harftir " : "& bir harf değildir", isalpha( '4' ) ? "4 bir harftir " : "4 bir harf değildir" ); printf( "%s\n%s\n%s\n%s\n\n",“isalnum için:", isalnum( 'A' ) ? "A bir rakam yada harftir" : "A bir rakam yada harf değildir ", isalnum( '8' ) ? "8 bir rakam yada harftir " : "8 bir rakam yada harf değildir", isalnum( '#' ) ? "# bir rakam yada harftir " : "# bir rakam yada harf değildir" ); printf( "%s\n%s\n%s\n%s\n%s\n%s\n","isxdigit için:", isxdigit( 'F' ) ? "F bir heksadesimal rakamdır" : "F bir heksadesimal rakam değildir ", isxdigit( 'J' ) ? "J bir heksadesimal rakamdır " : " J bir heksadesimal ","rakam değildir ", isxdigit( '7' ) ? "7 bir heksadesimal rakamdır " : " 7 bir heksadesimal rakam değildir", isxdigit( '$' ) ? "$ bir heksadesimal rakamdır " : " $ bir heksadesimal rakam değildir", isxdigit( 'f' ) ? " f bir heksadesimal rakamdır " : " f bir heksadesimal rakam değildir"); return 0; }