| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 565 人关注过本帖
标题:执行完 fputc(ch,rp);这一句,文件指针理应会自动移动下一个字符,按理应该会 ...
只看楼主 加入收藏
iyzh635428
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-10-17
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
执行完 fputc(ch,rp);这一句,文件指针理应会自动移动下一个字符,按理应该会回到当前位置,为何要再执行 fseek(rp,0L,SEEK_CUR);呢
原题:编程序对名为“d:\ccw.txt”的文件中"@"之前所有字符加密,加密方法是每个字节的内容减10.
以下的代码是参考答案提供的,只有一句是不明白的,不知道哪位大师能为我解答一下疑惑?执行完fputc(ch,rp);这一句,文件指针理应会自动移动下一个字符,按理应该会回到当前位置,为何要再执行fseek(rp,0L,SEEK_CUR);呢?而且,经过我的好几遍测试,没有fseek(rp,0L,SEEK_CUR);这一句,程序就会出现死循环.为什么呢?
#include<stdio.h>
#include<stdlib.h>
main()
{
 FILE *rp;
 char ch;
 if((rp=fopen("d:\\ccw.txt","r+"))==NULL)
  {printf("Can't not open file");exit(0);}
 while(!feof(rp))
  {
  if((ch=fgetc(rp))=='@') break;
   else ch-=10;
   fseek(rp,-1L,SEEK_CUR);
   fputc(ch,rp);
   fseek(rp,0L,SEEK_CUR);
  }
 fclose(rp);
}
搜索更多相关主题的帖子: 参考答案 include 而且 加密 
2014-10-17 14:03
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:5 
恩,我也同意你的看法,我不知道为什么要加那一句,帮你顶一下。希望大神来帮忙,求版主解救呀@TonyDeng

[ 本帖最后由 soulmate1023 于 2014-10-18 23:33 编辑 ]
2014-10-18 17:03
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:5 
加那句是为了刷新缓冲,相当于fflush。对流进行读与写操作之间必须有刷新缓冲的动作(单一的读或者写可以连续操作),否则会出问题(比如你遇到的死循环)。

重剑无锋,大巧不工
2014-10-19 00:26
iyzh635428
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-10-17
收藏
得分:0 
回复 3 楼 beyondyf
Anyway,Thank you!也许我水平太低了,你所说的我都没学过。
2014-10-19 11:46
快速回复:执行完 fputc(ch,rp);这一句,文件指针理应会自动移动下一个字符,按理应 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035541 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved