我知道如何在while循环中使用fgets来读取整个文本文件,但是我如何在该循环中按下一个键,以便它将读取另一行,一次一个?
我尝试了一个简单的printf("按任意键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 Continuen");
getchar();
}
fclose(arq);
return 0;
}
程序没有显示提示,因为stdio被缓冲,您没有刷新。使用。fflush (stdout);
:
fflush(stdout);
getchar();
还请注意,默认情况下stdin处于"cooked" IO模式。按回车键将产生一个字符,但其他字符将被缓冲,直到按回车键。