2015-03-16 3 views
-4

Это то, что я сейчас:Integer ошибка C

int main() { 
int number; 
printf("Type your number: "); 
scanf("%i",&number); 

char code[4]; 
printf("Type your code: "); 
scanf("%s",&code); 

Когда я типа ничего, кроме цифр в первой сценарий идет все с ума, он просто показывает

Введите число: NOTaNUMBER

Тип код: THErestOFtheSCRIPT

- назад в командной строке

То, что я хочу, чтобы это сделать, это

Введите номер: NOTaNUMBER

Вы не ввели номер

- Назад к командной строке

Как я могу сделать это?


Это отличается от упомянутого дубликата. Я говорю о C здесь, а не C++. C не знает cin, ответ на указанный дубликат. Тем не менее, ответ был найден ниже

+1

HTTP : //stackoverflow.com/questions/4072190/check-if-input-is-integer-type-in-c – marsh

+0

Хорошо, это просто не дублика te из этого: C++ работает совершенно иначе в этом случае ... – InzeBielderman

ответ

1

Для ввода строки используйте

scanf("%s",code); 

или лучше

scanf("%3s",code); 

Чтобы проверить правильность ввода для стоимостей номера возвращаемых зсапа:

char ch; 
    if(1 == scanf("%i",&number)) 
    { 
     // use correct number 
    } 
    else 
    { 
     // clean input bufer 
     while((ch = getchar()) != '\n' && ch != EOF); 
    } 
+1

Ваш код ломается, если 'getchar()' возвращает 'EOF', он перейдет в бесконечный цикл. –

+0

ОК. Я добавил проверку EOF. спасибо за предложение – petrovich

+0

Спасибо большое! ; D – InzeBielderman

Смежные вопросы