C Dili – 13. Konu

BUYUK VE KUCUK HARFLER

BUY-KUC.C:
=============================================
#include <stdio.h>
#include <ctype.h>   /* Not: Derleyiciniz bunu gerektirmeyebilir */
main()
{
   FILE *fp;
   char satir[80], dosyaismi[24];
   char *c;
   printf("Dosya ismini girin -> ");
   scanf("%s",dosyaismi);
   fp = fopen(dosyaismi,"r");
   do {
     c = fgets(satir,80,fp); /*bir satir oku */
     if (c != NULL) 
        karistir_butun_karakterleri(satir);
   } while (c != NULL);
   fclose(fp);
}
   
karistir_butun_karakterleri(satir)
   /* Bu fonksiyon butun buyuk harfleri kucuge, butun kucukleri de buyuge 
   cevirir. Diger butun karakterleri etkilemez. */
char satir[];
{
   int index;
   for (index = 0;satir[index] != 0;index++) {
     if (isupper(satir[index]))     /* buyuk harfse,1 doner */
        satir[index] = tolower(satir[index]);
     else {
        if (islower(satir[index]))  /* kucuk harfse,1 doner */
           satir[index] = toupper(satir[index]);}
     }
   printf("%s",satir);
}
=============================================
 

Bu basit programdaki yeni fonksiyonlar sunlardir:

isupper(); Karakter buyuk harfmidir?
islower(); Karakter kucuk harfmidir?
toupper(); Karakteri buyuk harf yap.
tolower(); Karakteri kucuk harf yap.

ilk fonksiyon, sayet parametresi olarak gecirilen deger, buyuk harf ise
(‘A’-‘Z’), 1 degerini dondurur, sayet baska bir karakter ise, 0 degeri
doner. ikincisi, sayet parametresi kucuk harf ise, 1 degerini dondurur.
3 uncu ve son fonksiyonlar ise, parametre olarak gecirilen karakteri buyuk
yada kucuk harfe degistirirler.

KARAKTERLERIN SINIFLANDIRILMASI

KARKLAS.C:
 ========================================
#include <stdio.h>
#include <ctype.h>  /* Derleyiciniz bunu gerektirmeyebilir */
main()
{
   FILE *fp;
   char satir[80], dosyaismi[24];
   char *c;
   
   printf("Dosya ismi -> ");
   scanf("%s",dosyaismi);
   fp = fopen(dosyaismi,"r");
   
   do {
     c = fgets(satir,80,fp);   /* bir satir oku */
     if (c != NULL) {
       veriyi_say(satir);
     }
   } while (c != NULL);
   fclose(fp);
} 
satiri_say(satir) char satir[];
{
   int beyazlar, kars, rakamlar;
   int index;
   beyazlar = kars = rakamlar = 0;
   for (index = 0;satir[index] != 0;index++) {
     if (isalpha(satir[index]))   /* 1 eger satir[] alfabetik ise   */
        kars++;
     if (isdigit(satir[index]))   /* 1 eger satir[] rakam ise     */
        rakamlar++;
     if (isspace(satir[index]))   /* 1 eger satir[] bosluk ise tab, */
        beyazlar++;               /*           yada yeni satir ise */
   }   /* sayan dongunun sonu */
   printf("%3d%3d%3d %s",beyazlar,kars,rakamlar,satir);
}
===========================================
 

Bircok yerde, \n yi, yeni bir satiri belirtmek icin kullandik, fakat cok
kullanilan baska kontrol karakterleri de vardir. Bu sekilde tanimlidirlar:

\n Yeni satir
\t Tab
\b Bir hane geri
\” Cift tirnak
\\ Ters bolu
\0 NULL (sifir)

Gordugunuz program, bir karakterin tipini belirleyen fonksiyonlar kullanir.
Kullandigi 3 fonksiyon sunlardir:

isalpha(); Karakter alfabetik mi?
isdigit(); Karakter bir rakam mi?
isspace(); Karakter \n , \t yada bosluk mu?

Program yeterince basit, bu nedenle daha fazla detaylara girmiyorum.. Bu  yeni fonksiyonlarin kullanimi da, ayni “isupper” yada “toupper” fonksiyonlari gibidir.

Bir Sonraki Konu