C语言怪问题,高手进来看一下,帮忙找到原因高分侍候

D盘文件1.txt里面内容“ABCDEFG”现将里面字母逐个处理后,覆盖源文件内容保存写了如下代码,思路貌似没有错fp=fopen("d:\\1.txt","rb+");... D盘文件1.txt里面内容“ABCDEFG”
现将里面字母逐个处理后,覆盖源文件内容保存
写了如下代码,思路貌似没有错
fp=fopen("d:\\1.txt","rb+");
c=fgetc(fp);
while(c!=EOF){
c+=32;
fseek(fp,-1L,SEEK_CUR);/*指针退回一字节*/
fputc(c,fp);
c=fgetc(fp);
}
执行之后文件内容却是“abbbbbbbbbbbb...”的死循环
高手帮忙找找原因
展开
 我来答
百度网友73cfffe81
2009-06-26 · TA获得超过300个赞
知道小有建树答主
回答量:338
采纳率:0%
帮助的人:424万
展开全部
你这个思路是正确的,这个程序在VC 6.0下跑确实是死循环。
我在linux下的gcc又跑了一下,不是死循环,结果是正确的。
应该是vc的bug
百度网友f7b9aa6bb
2009-06-26 · TA获得超过2250个赞
知道小有建树答主
回答量:584
采纳率:100%
帮助的人:464万
展开全部
我知道是什么原因但是没找到解决方法,因为你指针向前移,然后写字符的时候,并不是你想象中的覆盖式的写入。像WORD等程序,保存的时候也是覆盖式保存。我查了解决方法,没查到。或许可以换一种思路。提取之后覆盖保存。

================================
swyqwsa的回答正确的,汗颜啊。又学到了,O(∩_∩)O哈哈~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f34b4c9ab
2009-06-26 · TA获得超过288个赞
知道小有建树答主
回答量:130
采纳率:0%
帮助的人:121万
展开全部
把那个指针回退的语句改为
fp--;

另外 用r+ 打开就好 何必用rb+ 呢

试试行不行…
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
swyqwsa
2009-06-26
知道答主
回答量:12
采纳率:0%
帮助的人:5.1万
展开全部
main()

{
FILE *fp;
char c;
fp=fopen("d:\\1.txt","rt+");

c=fgetc(fp);
while(c!=EOF){
c+=32;
fseek(fp,-1L,SEEK_CUR);/*指针退回一字节*/
fputc(c,fp);
fseek(fp,0L,SEEK_CUR);//////////////加上这个就ok啦!
c=fgetc(fp);
}
fclose(fp);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式