当我按键时,阅读文本文件中的每一行?C程序设计
我知道如何在while循环中使用fgets来读取整个文本文件,但我如何才能在该循环中按下一个键,使其读取另一行,一次读取一行 我尝试了一个简单的printf(“按任意键”)getchar(),但什么也没发生,我运行程序,它什么也没做,甚至没有显示第一行。我认为这可能是一个愚蠢的问题,但我找不到如何做到这一点:( 以下是我尝试过的:当我按键时,阅读文本文件中的每一行?C程序设计,c,file,key,C,File,Key,我知道如何在while循环中使用fgets来读取整个文本文件,但我如何才能在该循环中按下一个键,使其读取另一行,一次读取一行 我尝试了一个简单的printf(“按任意键”)getchar(),但什么也没发生,我运行程序,它什么也没做,甚至没有显示第一行。我认为这可能是一个愚蠢的问题,但我找不到如何做到这一点:( 以下是我尝试过的: /* gcc readline.c -Wall -o read */ #include <stdio.h> //#include <stdlib
/* 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;
}
/*gcc readline.c-Wall-o read*/
#包括
//#包括
int main(int argc,char*argv[]){
字符url[]=“dbus.log”;
文件*arq;
字符信息[1000];
arq=fopen(url,“r”);
while(fgets(info,sizeof(info),arq)!=NULL){
printf(“%s”,信息);
printf(“按任意键继续\n”);
getchar();
}
fclose(arq);
返回0;
}
程序没有显示提示,因为stdio已缓冲,而您没有刷新。请使用fflush(stdout);以确保生成缓冲输出
像这样:
fflush(stdout);
getchar();
另外请注意,默认情况下,stdin处于“cooked”IO模式。按enter键将生成一个字符,但在按enter键之前,其他字符将被缓冲。对不起,您的意思是什么?不是getchar()也应该使用enter键吗?它可以是任何键me@user3121023同样的结果,不起作用here@ryykerdbus.log在同一个目录中,由于某些原因,它不会在每次按键时读取一行,它只是在读取任何内容之前“冻结”终端,如果我注释('/')printf(“按任意键继续\n”);'和“getchar()它向我显示了终端上的全部文本,但当我尝试使用getchar时,我没有成功谢谢你的回答并向我解释@Art Yerkes!:D