12.3 Katarlar Üzerinde İşlem Yapan Standart G/Ç Fonksiyonları
12.3 Katarlar Üzerinde İşlem Yapan Standart G/Ç Fonksiyonları
printf() ve scanf() fonksiyonları diğer tiplerde olduğu gibi formatlı okuma/yazma amaçlı kullanılır. Katar formatı %s dir. Örneğin:
1 2 3 4 |
char str[20]; ... scanf("%s",str); printf("%s\n",str); |
satırları ile klavyeden okunan katarın ilk 20 karakteri ekrana yazdırlabilir. Burada printf() fonksiyonu:
1 |
printf(str); |
şeklinde de kullanılabir. Bu durumda, katar ekrana yazdırılır fakat imlec (cursor) bir alt satıra geçmez.
gets() fonksiyonu klavyeden karakter dizisi almakta kullanılan bir C fonksiyonudur. Bu fonksiyon, klavyeden girilen karakterleri diziye yerleştirdikten sonra dizinin sonuna otomatik olarak NULL ('\0') karakterini ekler.
1 2 3 |
char str[20]; ... gets(str); |
NOT
|
puts() fonksiyonu bir karakter dizisini ekrana yazdırmak için kullanılır. Bu fonksiyon diziyi ekrana yazdırdıktan sonra imleci (cursor) bir sonraki satıra geçirir.
1 2 3 |
char *str = "Hangi cilgin bana zincir vuracakmis sasarim"; ... puts(str); |
puts(str) ile printf("%s\n",str) işlevsel olarak birbirine eşdeğerdir.
Buraya kadar anlatılanlar Program 12.1-3 de özetlenmiştir.
Program 12.1: Bir katarın farklı yöntemlerle ekrana yazdırılması
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 28 29 |
/* 12prg01.c Bir katarın farklı yöntemlerle ekrana yazılması */ #include <stdio.h> int main() { char dizi[7] = {'S', 'e', 'l', 'a', 'm', '!', '\0'}; int i; /* Herbir karakteri ayrı ayrı alt alta yaz */ printf("Dizi elemanlari:\n"); for (i=0; i<7; i++) printf("dizi[%d] icerigi: %c\n", i, dizi[i]); printf("\n"); /* 1. yöntem: her elemanı yanyana yaz */ printf( "Butun dizi (1.yontem): "); for (i=0; i<7; i++) printf("%c", dizi[i]); /* 2. Yöntem: bütün diziyi yaz */ printf("\nButun dizi (2.yontem): "); printf("%s\n", dizi); printf("\n"); return 0; } |
ÇIKTI
1 2 3 4 5 6 7 8 9 10 11 |
Dizi elemanlari: dizi[0] icerigi: S dizi[1] icerigi: e dizi[2] icerigi: l dizi[3] icerigi: a dizi[4] icerigi: m dizi[5] icerigi: ! dizi[6] icerigi: Butun dizi (1.yontem): Selam! Butun dizi (2.yontem): Selam! |
Aşağıdaki program kalvyeden girilen bir katar içindeki 'm' karakterlerinin sayısını blup ekrana yazar. İnceleyiniz.
Program 12.2: Bir katar içinde ‘m’ karakterinin sayısını öğrenme
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/* 12prg02.c: Bir stringin içindeki 'm' karakterlerinin sayısı hesaplar */ #include <stdio.h> int main() { char str[20]; int i,sayac=0; printf("Bir string girin: "); gets(str); for(i=0; str[i] != '\0'; i++) if( str[i] == 'm') sayac++; printf("'m' karakteri sayisi = %d\n",sayac); return 0; } |
ÇIKTI
1 2 |
Bir katar girin: marmara 'm' karakteri sayisi = 2 |
13. satırdaki döngüde, str[i]!='\0', koşulu ile sonlandırıcı karaktere gelinip gelinmedği sorgulanmaktadır. 14. satırda katar içindeki 'm' karakterine rastlanırsa sayac değeri bir artmaktadır. Katar sonuna kadar bütün 'm' karakterlerinin toplamı hesaplanıp ekrana yazdırılmıştır.
Program 12.2’deki döngü şöyle de yazılabilirdi:
1 2 3 4 |
... for(i=0; str[i]; i++) if(str[i] == 'm') sayac++; ... |
Buradaki işlemle str[i], NULL karakterinden farklı olduğu sürece döngü devam ettirilmiştir.
Aşağıdaki program elemanlı katar olan bir karakter dizisini ekrana yazar.
Program 12.3: Bir katarı yazdırma
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/* 12prg03.c: Bir elemanları katar olan karakter dizisini yazdırma */ #include <stdio.h> int main() { char *gun[7] = { "Pazartesi", "Sali", "Carsamba", "Persembe", "Cuma", "Cumartesi", "Pazar" }; int i; for(i=0; i<7; i++) printf("%d. %s\n",i+1,gun[i]); return 0; } |
ÇIKTI
1 2 3 4 5 6 7 |
1. Pazartesi 2. Sali 3. Carsamba 4. Persembe 5. Cuma 6. Cumartesi 7. Pazar |