关于文件操作中出现的问题,请高手指教!
很简单的程序,想将存于文件b.txt的字符串中的“#”号替换为“*”号,b.txt中的字符串为“12#4#”。
以下为代码:
int main(void)
{
FILE *fp;
char temp='\0';
if((fp=fopen("b.txt","rb+"))==NULL)
{
printf("打开文件出错!\n");
exit(0);
}
while(!feof(fp))
{
temp=fgetc(fp);
if(temp=='#')
{
fseek(fp,-1L,SEEK_CUR);
fputc('*',fp);
}
}
fclose(fp);
getch();
return 0;
}
可是运行结果却是一个死循环,打开b.txt文件,文件内容已被改写,结果为:
12*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2…………*2*2#。
我调试时,发现是在处理原始字符串“12#4#”时,对于第一个“#”号改写为“*”号后,文件位置指针又指向了“2”,判断非“#”后,指针下移,又指向了“#”号!可是按照之前的操作,“#”号已经被替换成“*”号才是啊!
我不明白文件位置指针怎么会如此跳转,并出现这种情况。
请高手解答,感激不尽!
[解决办法]