почему цикл while начинает выполняться бесконечно, если я ввожу любой алфавит
scanf("%d",&a)
функция возвращает 1 для любого числа и 0 для любого символа или строки.Как я знаю, EOF не равно 1 и 0
Похоже, что ключевые проблемы для OP заключаются в том, что при сбое сопоставления текст в stdin
не используется.Так что, как только "abc\n"
введен.'a'
и остальные остаются в stdin
до тех пор, пока какая-либо другая функция ввода не прочитает их.Поскольку у кода нет других способов чтения данных, у нас есть бесконечный цикл.
Обычный обходной путь для чтения оскорбительного символа
#include<stdio.h>
int main() {
int scan_count;
int a;
while((scan_count = scanf("%d",&a)) != EOF) {
if (scan_count == 0) {
getchar();
}
printf("hi devender \n");
}
return 0;
}
Или, как другие предполагают, потребляютдо конца строки ввода.