我试图一次打印24行随机文本文件,等待每次打印之间按下回车键。然而,我的检查仅在第一次发生,因此打印前24个,它等待输入按键然后打印其余按钮而不再执行检查。有什么想法吗?
#include<stdio.h>
int main(int argc, char *argv[]){
FILE *mystream;
char mystring[100];
int nullcount =0;
int key;
if(argc<2){
printf("Please provide a filename as an input\n");
}
else{
mystream = fopen(argv[1], "r"); //open the file for writing
if(mystream !=NULL){ // file steam pointer should n't be NULL if everything worked...
while( fgets(mystring,100, mystream) !=NULL )
{
printf("%s", mystring);
printf("%d", nullcount);
nullcount++;
if(nullcount==24)
{
nullcount = 0;
while(key !='\n')
{
key=getchar();
if(key=='q') return 0;
}
}
}
fclose(mystream); // close the file
}
else{
printf("something went wrong trying to open the file\n");
}
}
return 0;
}
答案 0 :(得分:0)
你有while
循环:
while(key !='\n')
{
key=getchar();
if(key=='q') return 0;
}
用户按Enter后,key
将等于'\n'
,而while循环将按预期停止。但是下次到达此部分时,key
仍为'\n'
,因此永远不会再次输入while
循环,并且不会调用getchar()
。
您应该将其更改为do {...} while
循环,以便主体至少执行一次。