我知道如何在while循环中使用fgets来读取整个文本文件,但如何在该循环中按一个键,以便它每次读取一行?
我试过使用一个简单的printf(“Press any key\n”)getchar()但是什么也没发生,我运行了这个程序,它什么也没做,甚至没有显示第一行。我想这可能是个愚蠢的问题,但我找不到怎么做:(
以下是我尝试过的:

/*  gcc readline.c -Wall -o read */

#include <stdio.h>
//#include <stdlib.h>

int main (int argc, char *argv[]) {

    char url[]="dbus.log";
    FILE *arq;
    char info[1000];

    arq = fopen(url, "r");

    while (fgets(info, sizeof(info), arq) != NULL) {
        printf("%s", info);
        printf("Press Any Key to Continue\n");
        getchar();
    }

    fclose(arq);
    return 0;
}

最佳答案

程序没有显示提示,因为stdio被缓冲,而您没有刷新。使用fflush(stdout);确保生成缓冲输出。
这样地:

fflush(stdout);
getchar();

还要注意,默认情况下stdin处于“cooked”IO模式。按enter将生成一个字符,但在按enter之前,其他字符将被缓冲。

10-04 09:53