首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于文件操作中出现的有关问题,请高手指教

2012-04-17 
关于文件操作中出现的问题,请高手指教!很简单的程序,想将存于文件b.txt的字符串中的“#”号替换为“*”号,b.tx

关于文件操作中出现的问题,请高手指教!
很简单的程序,想将存于文件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”,判断非“#”后,指针下移,又指向了“#”号!可是按照之前的操作,“#”号已经被替换成“*”号才是啊!
我不明白文件位置指针怎么会如此跳转,并出现这种情况。
请高手解答,感激不尽!

[解决办法]

探讨

引用:

fseek(fp,0,SEEK_CUR);//add
注意这句.读写之间一定要加这句.

c陷阱与缺陷中 印象最深的东西了...


请问一下为什么要加这句?

热点排行
Bad Request.