为什么我要继续获得无限循环?怎么修?

时间:2017-03-05 05:01:10

标签: c scanf strcmp

我的程序无限循环。我的导师告诉我只使用while(!feof(filename)),但我觉得这就是我遇到这个问题的原因。

程序应该做的是从数据文件中获取3个字符串和一个int,使用命令行参数通过strcmp获取第二个和第三个。我的程序只是直接进入else语句,那就是我的循环问题发生的地方。

这是我读取的数据文件的片段。注意无限循环只打印“Tide!”:

21600 2055551111 2055552222 1 Roll
21601 2055552222 2055551111 1 Tide! 

并且代码是:

void skipText(int size, FILE* textfile) {

    int i=0;
    char line[50];

    for (i=0; i<size; i++) {
        fscanf(textfile, "%s", line);
        printf("%s ", line);
    }
}


int main(int argc, char* argv[]) {

    char posix[30];
    char phone1[30];
    char phone2[30];
    int textsize=0;

    printf("\n\nTime                           %s                           %s", argv[2], argv[3]);
    printf("\n======================================================================================\n\n\n");

    FILE* textfile= fopen(argv[1],"r");

    if (textfile==NULL) {
        printf("File Doesn't Exist\n");
        return -1;
    }   

    fscanf(textfile, "%s %s %s %d", posix, phone1, phone2, &textsize); 

    while ( !feof(textfile) ) { 

        if ( (strcmp(argv[2],phone1)==0) && (strcmp(argv[3],phone2)==0) ) { //1st to 2nd
            printf("I WORK!");
            //printText(posix, phone1, phone2, textsize, line, textfile);
            //readableTime(posix);
             }


        else  skipText(textsize, textfile);

    fscanf(textfile, "%s %s %s %d", posix, phone1, phone2, &textsize); 

}


    fclose(textfile);
    return 0;
}

0 个答案:

没有答案