我知道如何在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之前,其他字符将被缓冲。