#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char buff[1];
int count;
fp = fopen("abc.txt","rb+");
while((count = fread(buff,1,1,fp))>0)
{
buff[0] +=1;
fseek(fp,-1,SEEK_CUR);
fwrite(buff,1,1,fp);
}
return 0;
}
这段代码本来是想把文件每个字节都加1。用文件指针的移动来控制读写的位置,fopen读一个字节,文件指针加1,之后把文件指针减1回到原来的位置,fwrite用处理后的字节覆盖原字节,文件指针加1指向下一个字节循环操作。但是实际出现的结果是从第二个字节开始会出现问题,比如原来txt文件的内容是“12345”,经过三次循环变成"23245"。
实在想不出出了什么问题,可能是我对文件指针和读写操作的理解出了偏差,希望有人指点一二。