我可以多次使用scanf并将输入存储在同一个变量中吗?

时间:2018-03-27 00:20:42

标签: c loops input char scanf

我正在做一个练习,我的程序需要输出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;
        }
    }

0 个答案:

没有答案