Bir karakter dizisi içeriğinin integer 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_int() fonksiyonunu kullanarak, ilk karakter - veya + ise bir sonraki karaktere geçer. Sonraki karakterlerin ondalık sayı sistemindeki bir rakama (0-9) eşit olduğunu 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_int(char str[]);
int main(void)
{
char cdizi1[] = "426587";
char cdizi2[] = "735.124";
char cdizi3[] = "3 7648";
printf("%s int bir değer %s.\n", cdizi1, is_int(cdizi1) ? "içerir" : "içermez");
printf("%s int bir değer %s.\n", cdizi2, is_int(cdizi2) ? "içerir" : "içermez");
printf("%s int bir değer %s.", cdizi3, is_int(cdizi3) ? "içerir" : "içermez");
return 0;
}
int is_int(char str[])
{
int i = 0;
// Başlangıçta işaret kontrolü
if(str[i] == '-' || str[i] == '+') {
i++;
}
while (str[i] != '\0') {
if(str[i]<48 || str[i]>57) {
return 0;
}
i++;
}
// Dizinin sonunda 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:
426587 int bir değer içerir. 735.124 int bir değer içermez. 3 7648 int bir değer içermez.