2013-12-10 2 views
0

В моем коде (в c) scanf() принимает одно целочисленное значение, но когда я ввожу целое число и нажимаю Enter, ничего не происходит (исполнение не продолжается как должно). Мне нужно нажать на клавишу, и только тогда программа продолжит номер, который я нажимаю первым.scanf принимает int, но продолжает выполнение только после ввода другого char/int и нажатия ввода

пример: код:

int num=0; 
printf("Enter a number and see if he belong to one of the groups:"); 
scanf("%d\n\n",&num); 

Выход:

Enter a number and see if he belong to one of the groups:5(enter) 

f(enter) 

и только тогда код продолжается ....

+2

0 Скачайте 'scanf ("% d ", &num);', scanf автоматически пропустит пробельные символы. – pepo

ответ

1

Ну, кажется, что вы говорите scanf читать два символа новой строки, не один:

scanf("%d\n\n", &num); 

Это должно дать правильное поведение вместо:

scanf("%d\n", &num); 
+0

спасибо, он работает !!! – oron

+0

Не забудьте принять ответ, если это полезно. –

1

Если принято решение

scanf("%d\n", &num); 

работает иначе, чем ваш публикуемую код, у вас есть не-совместимый компилятор. Пробелы после "%d", если "\n", "\t", " " или другие, а также их количество не должно иметь значения. Все они потребляют 0 или более пробелов. scanf("%d\n", &num) не возвращается до ввода пробела (или EOF).

Как @pepo предлагает использовать

scanf("%d", &num); 

или еще лучше, используйте fgets()/sscanf().

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