17 Ocak 2018 Çarşamba

C - Karakter Kontrol Kütüphanesi


C programlama dilinde karakterleri kontrol etmek için "ctype.h" kütüphanesi kullanılır. Fakat illaki bu kütüphaneyi kullanmak zorunda değiliz. Bunun yerine, bu kütüphanede yer alan fonksiyonların işlevini gören kodlarda yazabiliriz. Bu yazımızda sizlere hem bu fonksiyonları hemde bu fonksiyonların nasıl yazıldığını görmek için isdate fomksiyonunu göstereceğiz. Bu yaptığımız fonksiyon, fonksiyona girilen karakterin bir tarih karakteri olup olmadığını kontrol ediyor. Eğer tarih karakteri ise 1, değilse 0 değerini döndürüyor.



Altta yer alan fonksiyonları kullanabilmek için "ctype.h" kütüphanesini programa dahil etmemiz gerekmektedir.

Program kodlarına ayrıca github adresinden de ulaşabilirsiniz...

Karakter kontrol (sınıflandırma) fonksiyonları:


Fonksiyon İşlevi
int isalnum(int c) Girilen c karakteri, sayı, küçük harf veya büyük harf ise 1(true) değerini, farklı bir karakter ise 0 (false) değerini döndürür.
int isalpha(int c) Girilen c karakteri, harf ise 1 (true) değerini, farklı bir karakter ise 0 (false) değerini döndürür.
int isblank(int c) Girilen c karakteri, bir satırdaki iki kelimeyi ayıran bir karakter (' ' ve '\t' karakterleri) ise 1 (true), farklı bir karakter ise 0 (false) değerini döndürür.
int iscntrl(int c) Girilen c karakteri, kontrol karakteri (ASCII karakter setinde 0x00 ile başlayıp 0x1f ile biten ve 0x7f (DEL) de dahil olmak üzere) ise 1 (true), farklı bir karakter ise 0 (false) değerini döndürür.
int isdigit(int c) Girilen c karakteri, bir sayı karakteri ise 1 (true), farklı bir karakter ise 0 (false) değerini döndürür.
int isgraph(int c) Girilen c karakteri, ' ' (boşluk) karakteri dışında ekranda gözükebilen bir karakter ise 1 (true), farklı bir karakter ise 0 (false) değerini döndürür.
int islower(int c) Girilen c karakteri, küçük harf karakteri ise 1 (true), farklı bir karakter ise 0 (false) değerini döndürür.
int isupper(int c) Girilen c karakteri, büyük harf karakteri ise 1 (true), farklı bir karakter ise 0 (false) değerini döndürür.
int isprint(int c) Girilen c karakteri, ' ' (boşluk) karakteri de dahil ekranda gözükebilen bir karakter ise 1 (true), farklı bir karakter ise 0 (false) değerini döndürür.
int ispunct(int c) Girilen c karakteri, noktalama işareti karakteri ise 1 (true), farklı bir karakter ise 0 (false) değerini döndürür.
int isspace(int c) Girilen c karakteri, white spaces dediğimiz: ' ', '\n', '\t', '\v', '\f' ve '\r' karakterleri ise 1 (true), farklı bir karakter ise 0 (false) değerini döndürür.
int isxdigit(int c) Girilen c karakteri, hexadecimal sayı karakteri ise 1 (true), farklı bir karakter ise 0 (false) değerini döndürür.


Karakter dönüşüm fonksiyonları:


Fonksiyon İşlevi
int toupper(int c) Girilen c karakteri, küçük harf karakteri ise bu harfin büyük karakterini, diğer durumlarda aynı karakteri döndürür.
int tolower(int c) Girilen c karakteri, küçük harf karakteri ise bu harfin büyük karakterini, diğer durumlarda aynı karakteri döndürür.

Fonksiyonların Uygulama Kodları:


#include <stdio.h>
#include <ctype.h>

// Tarih yazarken kullanılan karakter
// olup olmadığını kontrol eden fonksiyon.
int isdate(int c) {
  // ASCII'de 44 ile 59 arasındaki karakterler:
  // - . / 0 1 2 3 4 5 6 7 8 9 : karakterleridir.
  if (c > 44 && c < 59)
    return 1;
  else
    return 0;
}

int main() {
  int counter, i;
  char str[16] = "315-3 f!.sW: B=", cntrl;
  str[15] = '\n';

  printf("%s %s", " Dizideki karakterler: ", str);

  // isalnum fonksiyonu.
  counter = 0;
  printf("\n%s", " Karakterler: ");
  for (i = 0; i < 16; i++)
    if (isalnum(str[i])) {
      counter++;
      printf("%c", str[i]);
    }

  printf("\n%s %d %s\n", " Dizide toplam", counter,
  "tane harf ve sayi karkteri vardir.");
  // isalpha fonksiyonu.
  counter = 0;
  printf("\n%s", " Karakterler: ");
  for (i = 0; i < 16; i++)
    if (isalpha(str[i])) {
      counter++;
      printf("%c", str[i]);
    }

  printf("\n%s %d %s\n", " Dizide toplam", counter,
  "tane harf karkteri vardir.");

  // isdigit fonksiyonu.
  counter = 0;
  printf("\n%s", " Karakterler: ");
  for (i = 0; i < 16; i++)
    if (isdigit(str[i])) {
      counter++;
      printf("%c", str[i]);
    }

  printf("\n%s %d %s\n", " Dizide toplam", counter,
  "tane sayi karkteri vardir.");

  // isxdigit fonksiyonu.
  counter = 0;
  printf("\n%s", " Karakterler: ");
  for (i = 0; i < 16; i++)
    if (isxdigit(str[i])) {
      counter++;
      printf("%c", str[i]);
    }

  printf("\n%s %d %s\n", " Dizide toplam", counter,
  "tane hexadecimal sayi karkteri vardir.");

  // isblank fonksiyonu.
  counter = 0;
  for (i = 0; i < 16; i++)
    if (isblank(str[i])) {
      counter++;
    }

  printf("\n%s %d %s\n", " Dizide toplam", counter,
  "tane bosluk ve tab karkteri vardir.");

  // isgraph fonksiyonu.
  counter = 0;
  printf("\n%s", " Karakterler: ");
  for (i = 0; i < 16; i++)
    if (isgraph(str[i])) {
      counter++;
      printf("%c", str[i]);
    }

  printf("\n%s %d %s%s\n", " Dizide toplam", counter,
  "tane (bosluk karakteri disinda) gozukebilen ",
  "karkter vardir.");

  // isprint fonksiyonu.
  counter = 0;
  printf("\n%s", " Karakterler: ");
  for (i = 0; i < 16; i++)
    if (isprint(str[i])) {
      counter++;
      printf("%c", str[i]);
    }

  printf("\n%s %d %s%s\n", " Dizide toplam", counter,
  "tane (bosluk karakteride dahil) gozukebilen ",
  "karkter vardir.");

  // islower fonksiyonu.
  counter = 0;
  printf("\n%s", " Karakterler: ");
  for (i = 0; i < 16; i++)
    if (islower(str[i])) {
      counter++;
      printf("%c", str[i]);
    }

  printf("\n%s %d %s\n", " Dizide toplam", counter,
  "tane kucuk harf karkteri vardir.");

  // isupper fonksiyonu.
  counter = 0;
  printf("\n%s", " Karakterler: ");
  for (i = 0; i < 16; i++)
    if (isupper(str[i])) {
      counter++;
      printf("%c", str[i]);
    }

  printf("\n%s %d %s\n", " Dizide toplam", counter,
  "tane buyuk harf karkteri vardir.");

  // ispunct fonksiyonu.
  counter = 0;
  printf("\n%s", " Karakterler: ");
  for (i = 0; i < 16; i++)
    if (ispunct(str[i])) {
      counter++;
      printf("%c", str[i]);
    }

  printf("\n%s %d %s\n", " Dizide toplam", counter,
  "tane noktalama isareti karkteri vardir.");

  // isspace fonksiyonu.
  counter = 0;
  for (i = 0; i < 16; i++)
    if (isspace(str[i])) {
      counter++;
    }

  printf("\n%s %d %s\n", " Dizide toplam", counter,
  "tane white space karkteri vardir.");

  // isdate fonksiyonu.
  counter = 0;
  printf("\n%s", " Karakterler: ");
  for (i = 0; i < 16; i++)
    if (isdate(str[i])) {
      counter++;
      printf("%c", str[i]);
    }

  printf("\n%s %d %s\n", " Dizide toplam", counter,
  "tane tarih karkteri vardir.");

  // toupper fonksiyonu.
  printf("\n%s", " Karakterlere toupper fonksiyonunun uygulanmis hali: ");
  for (i = 0; i < 16; i++) {
    cntrl = toupper(str[i]);
    putchar(cntrl);
  }

  // tolower fonksiyonu.
  printf("\n%s", " Karakterlere tolower fonksiyonunun uygulanmis hali: ");
  for (i = 0; i < 16; i++) {
    cntrl = tolower(str[i]);
    putchar(cntrl);
  }

  return 0;
}

Ekran Çıktısı:


Hiç yorum yok:

Yorum Gönder