12.4 Bazı Katar Fonksiyonları
12.4 Bazı Katar Fonksiyonları
Bu fonksiyonlar standart C’de iki katarı karşılaştırmak, bir katarın içeriğini diğerine kopyalamak ve katarın uzunluğunu bulmak vb işlemler için tanımlı fonksiyonlardır. Bu ve benzeri fonksiyonlar kullanılırken string.h kütüphanesi programın başına ilave edilmelidir. Burada, bunlardan bir kaçı Tablo 12.1 de verilmiştir.
Tablo 12.1: string.h kütüphanesine ait, bazı katar fonksiyonları
Fonksiyon | Açıklama |
int strcmp(char *str1,char *str2); | str1 ve str2 yi karşlaştırır. Eşitse 0, str1 büyükse 0’dan büyük bir değer aksi halde 0’dan küçük bir değer göderir. |
char *strcpy(char *str1, char *str2); | str2 yi str1 e kopyalar |
char *strcat(char *str1,char *str2); | str2 yi str1 e ekler |
char *strrev(str); | str yi ters çevirir (NULL karakteri hariç) |
int strlen(str); | str nin kaç karakterden oluştuğunu hesaplar |
char *strchr(char *str,char kr); | kr karakterinin str içindeki (baştan itibaren) ilk karşılaştığı yeri verir |
char *strstr(char *str1,char *str2); | str2 katarının str1 içindeki (baştan itibaren) ilk karşılaştığı yeri verir |
char *strlwr(char *str); | str nin bütün karakterini küçük harfe çevirir |
char *strupr(char *str); | str nin bütün karakterini büyük harfe çevirir |
Bu fonksiyonların kullanılması Program 12.4-8’de verilmiştir. Programları Dikkatle inceleyiniz.
Program 12.4: strcmp fonksiyonunun kullanımı
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 |
/* 12prg04.c: Basit bir şifre programı. Kullanıcı en fazla 3 kez yanlış şifre girebilir. */ #include <stdio.h> #include <string.h> int main() { char sifre[8]; int sonuc, hak=3; while( hak-- > 0 ) { printf("Sifre : "); gets(sifre); /* şifreyi al */ sonuc = strcmp(sifre,"elma%xj4"); if( sonuc==0 ){ /* şifre kontrol */ puts("sifre dogru"); break; } else puts("sifre yanlis"); } return 0; } |
ÇIKTI
1 2 3 4 5 6 |
Sifre : admin sifre yanlis Sifre : root sifre yanlis Sifre : elma%xj4 sifre dogru |
Program 12.5: strcpy fonksiyonunun kullanımı
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 |
/* 12prg05.c: Bir katarı diğerine kopyalama */ #include <stdio.h> #include <string.h> int main() { char str1[] = "Deneme"; char str2[15], str3[15]; int i; /* strcpy kullanarak kopyalama */ strcpy(str2, str1); /* strcpy kullanmadan kopyalama */ for(i=0; str1[i]; i++) str3[i] = str1[i]; str3[i] = '\0'; /* sonlandırıcı ekle */ /* sonuçlar ekrana */ printf("str1 : %s\n",str1); printf("str2 : %s\n",str2); printf("str3 : %s\n",str3); return 0; } |
ÇIKTI
1 2 3 |
str1 : Deneme str2 : Deneme str3 : Deneme |
Program 12.6: strcat fonksiyonunun kullanımı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/* 12prg06.c: Bir katarı diğerine ekler */ #include <stdio.h> #include <string.h> int main() { char mesaj[20] = "Selam "; /* 1. katar */ char isim[10]; /* 2. katar */ printf("Adiniz ? : "); scanf("%s",isim); /* ekle */ strcat(mesaj, isim); printf("%s\n",mesaj); return 0; } |
ÇIKTI
1 2 3 |
Adiniz ? : Mert Selam Mert |
Program 12.7: strlen fonksiyonunun kullanımı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/* 12prg07.c: Bir karakter dizisinin uzunluğunu bulur */ #include <stdio.h> #include <string.h> int main() { char s[20]; int k = 0; printf("Bir seyler yazin : "); scanf("%s",s); /* sonlandırıcı karaktere kadar */ while( s[k] != '\0' ) k++; puts("Dizinin uzunlugu"); printf("strlen kullanarak = %d\n",strlen(s)); printf("strlen kullanmadan = %d\n",k); return 0; } |
ÇIKTI
1 2 3 4 |
Bir seyler yazin : deneme stringi Dizinin uzunlugu strlen kullanarak = 14 strlen kullanmadan = 14 |
Program 12.8: Isim sırlama
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 |
/* 12prg08.c Kabarcık Sıralama (Bubble Sort) Algoritması ile isimleri alfabetik sırayla listeler */ #include <stdio.h> #include <string.h> #define n 5 int main() { char isim[n][8] = { "Semra", "Mustafa", "Ceyhun", "Asli", "Leyla" }; char gecici[8]; int i,j,k; puts("Once:\n------"); for(i=0; i<n; i++) printf("%s\n",isim[i]); /* sırala */ for(k=0; k<n-1; k++) for(j=0; j<n-1; j++) if( strcmp(isim[j],isim[j+1]) > 0 ) /* isim[j]>isim[j+1] ? */ { strcpy(gecici ,isim[j]); strcpy(isim[j] ,isim[j+1]); strcpy(isim[j+1],gecici); } puts("\nSonra:\n------"); for(i=0; i<n; i++) printf("%s\n",isim[i]); return 0; } |
ÇIKTI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Once: ------ Semra Mustafa Ceyhun Asli Leyla Sonra: ------ Asli Ceyhun Leyla Mustafa Semra |