У меня есть простой код на С следующим образом:GetChar вопрос, когда проверка чтения полукокса на клавишу ввода
#define RECORDS_PER_PAGE 24
int main(void) {
int i = 0, n;
char pause_char;
printf("Enter a number as the stop point: ");
scanf("%d", &n);
while (++i <= n) {
printf("i is: %d\n", i);
if (i % RECORDS_PER_PAGE == 0) {
printf("Press Enter to continue...");
while((pause_char = getchar()) != '\n');
}
}
return 0;
}
Проблема в том, когда я вхожу 30 в качестве точки останова, я получил следующий вывод:
я это: 1
я есть: 2
я есть: 3
...
я это: 24
Нажмите Enter, чтобы продолжить ... я это: 25
...
я есть: 30
Я ожидаю, что стоп-программа, когда если условие удовлетворяет. Но это продолжается, не обращая внимания на getchar. Но самое странное, когда я вхожу в примере 60, в качестве точки останова это даст следующий результат:
я есть: 1
я есть: 2
я есть: 3
...
я это: 24
(1) Нажмите Enter для продолжения ... я есть: 25
...
я есть: 30
...
я есть: 46
я есть: 47
я есть: 48
(2) Нажмите Enter, чтобы продолжить ...
я есть: 49
...
я есть: 59
я это: 60
Он остановится (2), но не (1). Я теперь что, возможно, что-то в буфере вызывает эту проблему, но я не понимаю, почему. Есть ли для этого объяснения?
GetChar возвращает Int не символ – pm100
'зсапЕ ("% d", &n);' -> 'зсапЕ ("% d% * с", &n); ' – BLUEPIXY
@BLUEPIXY, спасибо – sadrzadehsina