【发布时间】:2015-11-19 13:18:50
【问题描述】:
int ch;
char Name1[24], Name2[24],*p1,*p2;
while ((ch = fgetc(inz)) != EOF){
fseek(inz, -1, SEEK_CUR);
fgets(Name1, 24, inz);
fgets(Name2, 24, inz);
p1 = Name1;
p2 = Name2;
p1 += 3;
p2 += 3;
if (atoi(p1) > atoi(p2)){
fseek(inz, -46, SEEK_CUR);
fputs(Name2, inz);
fputs(Name1, inz);
}
fseek(inz, -23, SEEK_CUR);
i --;
}
我有这个代码。 inz 是我在 r+ mod 中的文件。我想将每个字符串与下一个字符串进行比较,并根据第四个字符对它们进行排序。该功能正在运行,但是..它不可阻挡,它永远运行... **我已尝试更改 int ch;也烧焦。还是没用,feof也没用。
【问题讨论】:
-
“i”在哪里定义,它的作用是什么?我认为您永远不会到达 EOF,因为您反复调用 fseek 来倒带文件。我建议开始将有序列表写入另一个文件。
-
在循环的每次迭代中,在读入所有变量(
ch、Name1、Name2、p1和p2)后打印出所有变量。另外,打印ftell()的结果,这样您就可以看到您在文件中的位置。这应该能让你很好地了解你的逻辑哪里出了问题。 -
请出示预期变更后的文件,并附上文件样本。
-
每次读取文件中的字符时,都会在文件中后退(至少一个位置)。这是一个永无止境的循环,因为您将永远无法到达文件末尾...