免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3923 | 回复: 5
打印 上一主题 下一主题

linux 下写文件出现问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-19 23:23 |只看该作者 |倒序浏览
我在linux 下把一个unsigned char 数组的数据写到一个文件里去,该数组总长度为100,我调用write函数,主要代码如下:
int fd = open("./1.txt",O_WRONLY | O_TRUNC | O_CREAT,S_IWUSR );
int ret = write(fd,buf,100);
printf("%d\n",ret);
close(fd);

结果打印出来的ret是100,但实际的1.txt里存放了103或者102个字节的数据,不知为何?

望有遇到此类问题的兄弟姐妹们给个指点,多谢:)

论坛徽章:
0
2 [报告]
发表于 2007-05-06 23:46 |只看该作者
你这个多出的2个或是3个字节是什么数据?

论坛徽章:
0
3 [报告]
发表于 2007-05-07 15:28 |只看该作者

回复 #1 quner2001 的帖子

文件结束符???????????

论坛徽章:
0
4 [报告]
发表于 2007-05-10 11:08 |只看该作者
通过用ultraedit查看文件内容(转为二进制数据),发现不是在文件结尾多的,而是在文件中间的内容中,所以我觉得很奇怪。

论坛徽章:
0
5 [报告]
发表于 2007-05-10 11:48 |只看该作者
write(fd,buf,100);
你不是最多才写100字节吗?

论坛徽章:
0
6 [报告]
发表于 2007-05-14 14:48 |只看该作者

回复 #1 quner2001 的帖子

我在linux下按照你的写法没问题,以前在windows下碰到过这种问题是因为没有按照“b"的2进制方式写文件,windows下默认是文本方式写入所以换行时会插入一个“0A0D"换行符,结果会多些,linux下是以2进制读写文件的,所以不应该会出现这种问题啊。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP