我正在做一个练习,我的程序需要输出20行文件,然后等待用户输入。如果输入是字符g
,程序应该停止执行。否则,它应该打印另外两行并再次请求输入。
当我执行程序时,我只被要求输入一次。也就是说,当我输入g
以外的字符时,程序会继续执行(应该如此)但不再请求输入,它只输出文件的其余部分。
我试过调试它,但我没看到错误可能在哪里。我还尝试使用scanf()
,fscanf()
,getc()
和getchar()
获取输入,但程序的行为不会改变。我错过了什么?
#include <stdio.h>
#define LINES 20
#define ESCAPE_CHAR 'g'
// Error checking, opening file, etc.
// ...
char c;
int count = 0;
while ((c = getc(file)) != EOF)
{
// output
putc(c, stdout);
// increment count if character is linefeed
if (c == '\n')
++count;
// ask for character once 20 lines have been printed
if (count == LINES)
{
count = 0;
// exit loop if input is 'g'
/* I also tried scanf(), fscanf() and getc()
here and the results were the same. */
if (getchar() == ESCAPE_CHAR)
break;
}
}