BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C örnek kodlar > c_is_float

C örnek kodlar

Bir karakter dizisi içeriğinin float bir sayı olup olmadığını kontrol etme

Bir karakter dizisi içeriğinin float bir sayı olup olmadığını kontrol etmek için, dizi içindeki her bir karakteri ayrı ayrı kontrol etmek gerekir.

Aşağıdaki program, is_float() fonksiyonunu kullanarak, , ilk karakter - veya + ise bir sonraki karaktere geçer. Sonraki karakterlerin ondalık sayı sistemindeki bir rakama (0-9) veya nokta işaretine eşit olduğunu, nokta karakterinin sadece bir kez kullanıldığını ve karakter dizisinin son karakterinin '\0' karakteri olduğunu kontrol eder. Tüm kontroller olumlu ise, 1 değerini değilse 0 değerini geri döndürür.


#include <stdio.h>

int is_float(char str[]);

int main(void)
{
  char cdizi1[] = "1269.78";
  char cdizi2[] = "4ab2.kd1";
  char cdizi3[] = "3 57.25";

  printf("%s float bir değer %s.\n", cdizi1, is_float(cdizi1) ? "içerir" : "içermez");
  printf("%s float bir değer %s.\n", cdizi2, is_float(cdizi2) ? "içerir" : "içermez");
  printf("%s float bir değer %s.", cdizi3, is_float(cdizi3) ? "içerir" : "içermez");

  return 0;
}

int is_float(char str[]) {
  int i = 0;
  int dot_count = 0;

  // Başlangıçta işaret kontrolü
  if(str[i] == '-' || str[i] == '+') {
     i++;
  }

  while (str[i] != '\0') {
    // Karakter rakam veya . işareti değilse
    if((str[i] < 48 || str[i] > 57) && str[i] != '.') {
       return 0;
    }
    // Karakter . işareti ise
    if(str[i] == '.') {
       dot_count++;
       // İki noktadan fazla olmamalı
       if(dot_count > 1) {
          return 0;
       }
    }
    i++;
  }

  // Dizinin sonundaki null karakteri kontrol etme
  if(str[i] == '\0') {
     return 1;
  }
  else {
     return 0;
  }
}

Yukarıdaki programı derleyip çalıştırdığımızda, aşağıdaki ifadeleri ekrana yazar:

1269.78 float bir değer içerir.
4ab2.kd1 float bir değer içermez.
3 57.25 float bir değer içermez.