2013-12-01 4 views
1

У меня возникла проблема, когда я хочу пройти через массив и проверить, что введены только положительные числа. Я знаю, что можно использовать isDigit из ctype.h, но я бы предпочел что-то построить сам. То, как я думаю, возможно, состоит в том, чтобы перебирать каждый элемент массива и видеть, хранится ли там значение от 0 до 9, но оно не работает. Это мой код до сих пор:Убедитесь, что массив содержит только числа

char testArray[11] = {'0'}; 
printf("Enter a string no longer than 10 chars"); 
scanf("%s", testArray); 
int x; 
int notanumber = 0; 
for (x = 0; x < 11; x++) { 
     if ((testArray[x] < 0) || (testArray[x] > 9)) { 
       notanumber++; 
     } 
} 
printf("%i", notanumber); 
+0

' '0'' это 'char', представляющий' 0', это не число/числовое значение '0'. – user2485710

+0

Итерации по массиву и добавление его элементов. Каждая последовательная сумма должна быть выше предыдущей. – Eimantas

+0

Существует стандартная функция для проверки, является ли символ цифрой: 'isdigit' –

ответ

1

Это не работает, потому что 0 и 9 целые числа, не символы. Изменение if условие

if((testArray[x] >= '0') || (testArray[x] <= '9')){ ... } 

проверить цифры от 0 до 9.

+1

Спасибо, я всегда выскальзываю, вспоминая, что включаю «вокруг значений символов». – user3054399

0

эта линия

if((testArray[x] < 0) || (testArray[x] > 9)){ 

следует заменить

if((testArray[x] < '0') || (testArray[x] > '9')){ 
Смежные вопросы