执行完 fputc(ch,rp);这一句,文件指针理应会自动移动下一个字符,按理应该会回到当前位置,为何要再执行 fseek(rp,0L,SEEK_CUR);呢
原题:编程序对名为“d:\ccw.txt”的文件中"@"之前所有字符加密,加密方法是每个字节的内容减10.以下的代码是参考答案提供的,只有一句是不明白的,不知道哪位大师能为我解答一下疑惑?执行完fputc(ch,rp);这一句,文件指针理应会自动移动下一个字符,按理应该会回到当前位置,为何要再执行fseek(rp,0L,SEEK_CUR);呢?而且,经过我的好几遍测试,没有fseek(rp,0L,SEEK_CUR);这一句,程序就会出现死循环.为什么呢?
#include<stdio.h>
#include<stdlib.h>
main()
{
FILE *rp;
char ch;
if((rp=fopen("d:\\ccw.txt","r+"))==NULL)
{printf("Can't not open file");exit(0);}
while(!feof(rp))
{
if((ch=fgetc(rp))=='@') break;
else ch-=10;
fseek(rp,-1L,SEEK_CUR);
fputc(ch,rp);
fseek(rp,0L,SEEK_CUR);
}
fclose(rp);
}