【发布时间】:2014-02-21 06:58:48
【问题描述】:
此代码用于以相反的顺序读取文本文件。并且成功了,显示文件的原始内容和文件的反转内容。
#include <stdio.h>
#include <stdlib.h>
int main() {
int count = 0, ch = 0;
FILE *fp;
if( (fp = fopen("file.txt", "r")) == NULL ) {
perror("fopen");
exit(EXIT_FAILURE);
}
printf("\tINPUT FILE\n");
printf("\n");
while(!feof(fp)) {
if((ch = getc(fp)) != EOF) {
printf("%c", ch);
count ++;
}
}
feof(fp);
printf("\n");
printf("\tREVERSED INPUT FILE\n");
printf("\n");
while(count) {
fseek(fp, -2, SEEK_CUR);
printf("%c", getc(fp));
count--;
}
printf("\n");
fclose(fp);
}
但是当我替换的时候,这段代码
while(!feof(fp)) {
if((ch = getc(fp)) != EOF) {
printf("%c", ch);
count ++;
}
}
通过
fseek (fp, 0, SEEK_END); or feof(fp);
基本上我只是直接到文件末尾而不打印文件的原始内容并尝试打印文件的反转内容。 但是因为它也不打印反转的内容!!!它只是显示空白。为什么会这样??
注意:fseek(fp, -2, SEEK_CUR); 已完成此操作(在另一个 while 循环中),因为 getc(fp) 将 fp 向前移动 1,因此需要将其向后倒退 2,最初它也将指向 EOF
这里发生了什么?谁能解释一下?
【问题讨论】: