忘记密码   免费注册 查看新帖 | 论坛精华区
ChinaUnix.net
  平台论坛 博客 微博 读书 人才 精华 文库 自测 | 频道操作系统 开发 数据库 存储 服务器 网络 IT新闻 Linux 下载 Power用户组
最近访问板块 发新帖
查看: 1165 | 回复: 18

麻烦大家帮我调一个fread的小程序 [复制链接]
更多

Rank: 2

帖子
439
主题
162
精华
0
可用积分
1412
专家积分
0
在线时间
99 小时
注册时间
2008-07-15
最后登录
2009-04-29
论坛徽章:
0
发表于 2009-01-07 09:16:41 |显示全部楼层
#include <stdio.h>
int    main(void)
{
        char buf[10],buf1[10];
        FILE *fp;
        int n;
        fp = fopen("aaaa","r");
        fread(buf,3,1,fp);
        buf[3] =  '\0';
        n=fread(buf1,2,1,fp);
        buf1[2] =  '\0';
        printf("n=%d,buf=%s,buf1=%s",n,buf,buf1);
        return 0;
}
运行结果
n=0,buf=abc,buf1=
>
为什么会换行输出呢?
只送鱼,不教打渔

Rank: 7Rank: 7Rank: 7

帖子
13018
主题
118
精华
0
可用积分
12061
专家积分
222
在线时间
1687 小时
注册时间
2008-03-17
最后登录
2011-05-03
论坛徽章:
0
发表于 2009-01-07 09:25:04 |显示全部楼层
你文件的内容是什么啊?
我听饼干mm说的:一个人越在意的地方,就是最令他自卑的地方

Rank: 2

帖子
439
主题
162
精华
0
可用积分
1412
专家积分
0
在线时间
99 小时
注册时间
2008-07-15
最后登录
2009-04-29
论坛徽章:
0
发表于 2009-01-07 09:37:27 |显示全部楼层

回复 #2 5毛党党员 的帖子

abc
只送鱼,不教打渔

Rank: 7Rank: 7Rank: 7

帖子
13018
主题
118
精华
0
可用积分
12061
专家积分
222
在线时间
1687 小时
注册时间
2008-03-17
最后登录
2011-05-03
论坛徽章:
0
发表于 2009-01-07 09:45:20 |显示全部楼层
那程序的结果没错啊。。。
我听饼干mm说的:一个人越在意的地方,就是最令他自卑的地方

Rank: 2

帖子
439
主题
162
精华
0
可用积分
1412
专家积分
0
在线时间
99 小时
注册时间
2008-07-15
最后登录
2009-04-29
论坛徽章:
0
发表于 2009-01-07 09:49:04 |显示全部楼层

回复 #4 5毛党党员 的帖子

n=0,buf=abc,buf1=
>
我觉得应该是
n=0,buf=abc,buf1= >
为什么会换行啊

Rank: 5Rank: 5

帖子
1947
主题
132
精华
4
可用积分
7472
专家积分
5
在线时间
83 小时
注册时间
2008-08-29
最后登录
2011-11-07
论坛徽章:
0
发表于 2009-01-07 09:49:24 |显示全部楼层
原帖由 5毛党党员 于 2009-1-7 09:25 发表
你文件的内容是什么啊?


读到回车了吧
想:一群人做同一行业,上班的时间可以一边工作一边在线交流,可能离的很远,也可能近在咫尺。
北京、嵌入式开发、linux,有一定开发经验,符合这三条就可以加进来我的qq群:40298332

Rank: 2

帖子
439
主题
162
精华
0
可用积分
1412
专家积分
0
在线时间
99 小时
注册时间
2008-07-15
最后登录
2009-04-29
论坛徽章:
0
发表于 2009-01-07 09:58:30 |显示全部楼层

回复 #6 eveson 的帖子

n的值是0,说明没有读到值,那么换行符是哪来的啊?
Santa Monica

Rank: 3Rank: 3

帖子
1842
主题
12
精华
2
可用积分
4271
专家积分
65
在线时间
1652 小时
注册时间
2005-06-21
最后登录
2011-11-24
论坛徽章:
0
发表于 2009-01-07 10:02:52 |显示全部楼层
原帖由 wangxiaoguang 于 2009-1-6 17:58 发表
n的值是0,说明没有读到值,那么换行符是哪来的啊?


buf1没有初始化。
Santa Monica

Rank: 5Rank: 5

帖子
1947
主题
132
精华
4
可用积分
7472
专家积分
5
在线时间
83 小时
注册时间
2008-08-29
最后登录
2011-11-07
论坛徽章:
0
发表于 2009-01-07 10:03:21 |显示全部楼层
原帖由 wangxiaoguang 于 2009-1-7 09:58 发表
n的值是0,说明没有读到值,那么换行符是哪来的啊?


不好意思,没仔细看,我运行了下,我这没有换行输出啊。
你确定每次运行结果都这样吗?
想:一群人做同一行业,上班的时间可以一边工作一边在线交流,可能离的很远,也可能近在咫尺。
北京、嵌入式开发、linux,有一定开发经验,符合这三条就可以加进来我的qq群:40298332

Rank: 1

帖子
231
主题
67
精华
2
可用积分
236
专家积分
5
在线时间
134 小时
注册时间
2002-04-27
最后登录
2012-02-09
论坛徽章:
0
发表于 2009-01-07 10:06:36 |显示全部楼层
原帖由 wangxiaoguang 于 2009-1-7 09:49 发表
n=0,buf=abc,buf1=
>
我觉得应该是
n=0,buf=abc,buf1= >
为什么会换行啊



n=0,说明fread没读到数据,buf1的内容没有改变,你的buf1原来的内容未知。如果在fread前,memset(buf1,0,sizeof(buf1)),会得到你预计的结果。
您需要登录后才可以回帖 登录 | 注册

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP