2015-11-10 2 views
0

Я проверяю ошибки на письма. Если введена буква, то ее предполагается распечатать ошибку и выйти. Если это число, то предполагается, что он должен выполнить оператор (который я не ввел в код с момента его несоответствия в данный момент) под if. Когда я ввожу число, он должен запускать оператор if, но когда я ввожу букву или число, он переходит к инструкции else.Ошибка проверки, если пользователь вводит письмо или номер

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


int main() 
{ 
    int x; 
    printf("Enter up to 10 positive integer ending with EOF:\n"); 

while((scanf("%d",&x)) != EOF && x < 100){ 


if(isdigit(x)){ 
//statement 
} 

else{ 
printf("error, wrong input\n"); 
return 0; 
} 

} 


if(x >= 100) 
printf("error, wrong input\n"); 


return 0; 
} 
+0

Компилятор Си не заботится о том, что отступы, но это довольно запутанным для меня. – davejagoda

+1

Вам не нужно проверять с помощью 'isdigit'. 'scanf' с'% d' уже проверяет, может ли вход обрабатываться как целое число. А также преобразует входные символы в целое число при успешном выполнении. Он вернет '1', если вход может быть проанализирован как целое и' 0' в противном случае. Итак, вам нужно только проверить 'if (x> = 0 && x <= 9)', чтобы выполнить эквивалентную проверку isdigit (хотя я подозреваю, что вы действительно просто хотите проверить, является ли вход целым, а не цифра). – kaylum

ответ

1

Вы хотите isdigit проверять char, пожалуйста, измените scanf на:

while((scanf("%c",&x)) != EOF && x < 100){ // yes x is an int, but here you want a char 
Смежные вопросы