简单阅读文件查询

时间:2013-12-03 17:21:21

标签: c

我试图一次打印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;
}

1 个答案:

答案 0 :(得分:0)

你有while循环:

while(key !='\n')
{
    key=getchar();
    if(key=='q') return 0;
}

用户按Enter后,key将等于'\n',而while循环将按预期停止。但是下次到达此部分时,key仍为'\n',因此永远不会再次输入while循环,并且不会调用getchar()

您应该将其更改为do {...} while循环,以便主体至少执行一次。