12.5 Katarların Fonksiyonlarda Kullanılması
12.5 Katarların Fonksiyonlarda Kullanılması
Katarların fonksiyonlara parametre olarak geçirilmesi durumuna sıklıkla rastlanır. Gerçekte fonksiyona parametre olarak aktarılan karakter dizisini gösteren bir adrestir. Bu yüzden karakter dizileri fonksiyonlara çoğunlukla gösterici tipinde geçirilir.
Aşağıdaki iki örnekte yazılan struzn ve strcev fonksiyonları sırasıyla strlen ve strrev fonksiyonların dengi niteliğindedir. Burada kullanılan benzer mantıkla, string.hkütüphanesindki birçok fonksiyon yazılabilir. İnceleyiniz.
Program 12.9: strlen dengi bir fonksiyon: struzn
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 30 |
/* 12prg09.c: Bir katarın uzunluğunu bulan strlen dengi bir fonksiyon */ #include <stdio.h> #include <string.h> int struzn(char *); int main() { char *s; printf("Bir katar girin: "); gets(s); printf("Uzunlugu (struzn) : %d\n",struzn(s)); printf("Uzunlugu (strlen) : %d\n",strlen(s)); return 0; } /* bir karakter dizisinin uzunluğunu hesaplar */ int struzn(char *str) { int n = 0; while(str[n]) n++; return n; } |
ÇIKTI
1 2 3 |
Bir katar girin: Programlama Uzunlugu (struzn) : 11 Uzunlugu (strlen) : 11 |
Program 12.10: strrev dengi bir fonksiyon: strcev
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 30 31 32 33 34 35 36 37 |
/* 12prg10.c: Bir katarın tersini veren bir fonksiyon */ #include <stdio.h> #include <string.h> char *strcev(char *); int main() { char s[50]; printf("Bir katar girin: "); scanf("%s",s); printf("Katar, s : %s\n",s); printf("Tersi, strcev(s) : %s\n",strcev(s)); return 0; } /* str katarını ters-yüz eder */ char *strcev(char *str) { int i,n; char gecici; n = strlen(str); for(i=0; i<n/2; i++) { gecici = str[i]; str[i] = str[n-i-1]; str[n-i-1] = gecici; } return str; /* geri dönüş değeri bir gösterici */ } |
ÇIKTI
1 2 3 4 5 |
Bir katar girin: Programlama Katar, s : Programlama Tersi, strcev(s) : amalmargorP |