| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1298 人关注过本帖
标题:经常被引用的最简单的C程序,但几乎所有的C教材都错了
取消只看楼主 加入收藏
macrohard
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-3
收藏
 问题点数:0 回复次数:4 
经常被引用的最简单的C程序,但几乎所有的C教材都错了
最简单的读一个文件,然后写出到另一个文件,很多C教材都有这个例子,确实看起来太简单,
但只要你编译并运行,用二进制编辑器仔细查看结果,
你就会百思不得其解,
很多对库函数的说明会让你越看越糊涂。



FILE *fp1, *fp2;
char c;
fp1 = fopen("Input.bin", "rb");
fp2 = fopen("Output.bin", "wb");
while(!feof(fp1)) {
c = fgetc(fp1);
fputc(c, fp2);
}
fclose(fp1);
fclose(fp2);
搜索更多相关主题的帖子: 教材 二进制 bin fgetc 
2006-04-03 13:37
macrohard
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-3
收藏
得分:0 
2楼同学的修改也有问题啊,
如果输入文件中有-1的值,就会被当做EOF,
造成文件截断,

其实 WindRiver的 VxWorks的Help里也注意到这个问题,
但对fgetc的解释会让人更迷惑。
2006-04-03 14:40
macrohard
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-3
收藏
得分:0 
谢谢楼上的提醒,是为了简化,才没有加fopen==NULL判断的
2006-04-03 17:34
macrohard
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-3
收藏
得分:0 

谢谢楼上的解答,
我觉得这个问题的根源是feof 和fgetc这两个库函数的文件偏移指针的设计有问题,没有按统一的标准进行规划。

2006-04-04 09:38
macrohard
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-3
收藏
得分:0 

楼上的其实没有发现问题所在,并不是那个简单的问题,
涉及到 C 的设计者对 流指针的处理问题。

2006-04-04 12:15
快速回复:经常被引用的最简单的C程序,但几乎所有的C教材都错了
数据加载中...
 
   



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

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