C++疑问之文件

Damon-FZ 2018-01-05 10:24:03
我用fwrite写二进制文件的时候,发现当我写一个结构体大小的数据到文件中时,出现以下情况:
已知结构体大小20字节,该结构为位域结构体,写到文件后,文件大小变为21字节。
多出一个字节,多出的字节在第四个字节,为0D。请叫各路大神,这是什么原因?
...全文
153 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
CT8100 2018-01-06
  • 打赏
  • 举报
回复
调用fwrite函数用只写(w)打开时,如果碰到换行符(0x0A),编译器会自动转换为回车换行符(0x0D 0x0A),然后写入文件。这样写入文件的数据就会与原始数据有差异。所以我们只需要把只写(w)改为二进制写(wb)就可以了、、
幻夢之葉 2018-01-05
  • 打赏
  • 举报
回复
边界对齐?你结构体sizeof得出的是多少字节?
赵4老师 2018-01-05
  • 打赏
  • 举报
回复
不要把 fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fseek,ftell,fread,fwrite,fgetc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待 弄混了
啊哈moment 2018-01-05
  • 打赏
  • 举报
回复
贴一下代码 0d------回车符号------"/r" 0a------换行符号------"/n"

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧