Почему моя программа, при репите печатает милиард надписей? - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <stdlib.h> int main() { int n, i, k, t; printf("Vvedity 5znacno chislo\n"); t=scanf("%5d", &n); k = 10000; if (t==!0 && n<100000 && n>9999) for(i = 0; k != 0; i++) { printf("%d chislo = %d\n",i+1, n/k%10); k/=10; } else { printf("Oshibka,nepravilny vvod\n \0"); main(); } return 0; }
Решение задачи: «Почему моя программа, при репите печатает милиард надписей?»
textual
Листинг программы
while((c = getchar()) != '\n' && c != EOF);
Объяснение кода листинга программы
- Программа считывает символ из стандартного ввода (по умолчанию это клавиатура) в переменную типа char с именем
c
. - Процесс считывания продолжается до тех пор, пока не будет считан символ новой строки (\n) или пока не достигнется конец файла (EOF).
- При каждом считывании символа, программа проверяет его значение на равенство новой строке или EOF.
- Если условие истинно, то программа прекращает цикл и переходит к следующей итерации.
- Если условие ложно, то программа продолжает считывать символы до тех пор, пока не достигнет новой строки или EOF.
- Если программа достигает EOF без считывания новой строки, то она выводит миллиард сообщений, что может быть нежелательным.
- Чтобы исправить эту проблему, можно добавить дополнительную проверку после каждой итерации цикла, чтобы проверить, достигнут ли EOF, и прекратить цикл, если это так.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д