我的程序无限循环。我的导师告诉我只使用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;
}