
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...”的死循环
高手帮忙找找原因 展开
现将里面字母逐个处理后,覆盖源文件内容保存
写了如下代码,思路貌似没有错
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...”的死循环
高手帮忙找找原因 展开
展开全部
你这个思路是正确的,这个程序在VC 6.0下跑确实是死循环。
我在linux下的gcc又跑了一下,不是死循环,结果是正确的。
应该是vc的bug
我在linux下的gcc又跑了一下,不是死循环,结果是正确的。
应该是vc的bug
展开全部
我知道是什么原因但是没找到解决方法,因为你指针向前移,然后写字符的时候,并不是你想象中的覆盖式的写入。像WORD等程序,保存的时候也是覆盖式保存。我查了解决方法,没查到。或许可以换一种思路。提取之后覆盖保存。
================================
swyqwsa的回答正确的,汗颜啊。又学到了,O(∩_∩)O哈哈~
================================
swyqwsa的回答正确的,汗颜啊。又学到了,O(∩_∩)O哈哈~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把那个指针回退的语句改为
fp--;
另外 用r+ 打开就好 何必用rb+ 呢
试试行不行…
fp--;
另外 用r+ 打开就好 何必用rb+ 呢
试试行不行…
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
{
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询