在最后一个while循环中,应该打印存储在文件中的每第5个字符,但循环无限期地继续,而不是终止。 feof()函数应该在到达END OF FILE时返回1并且循环应该退出但是循环无限期地继续。
#include<stdio.h>
main() {
long n, k;
char c;
FILE *fp;
fp = fopen("RANDOM", "w");
while ((c = getchar()) != EOF) {
putc(c, fp);
}
n = ftell(fp);
printf("\nNo. of characters entered by the user is : %ld\n", n);
fclose(fp);
fp = fopen("RANDOM", "r");
while(feof(fp) == 0) {
n = ftell(fp);
c = getc(fp);
printf("The character at %ld position is %c\n", n, c);
fseek(fp, 4l, 1);
}
}
答案 0 :(得分:3)
来自man fseek():
成功调用
@Override public void onViewRecycled(final RecyclerView.ViewHolder holder) { holder.toggle.setOnCheckedChangeListener(null); super.onViewRecycled(holder); }
函数会清除流的文件结束指示符。
即使您将位置指示器设置在EOF后面,fseek()
也会成功。
因此,当fseek()
是循环中的最后一个命令时,while (feof(fp) == 0)
将永远不会终止。
相反,你可以这样做:
fseek()