写入文件二进制的问题

不录 2003-01-17 07:18:47
void writefile()
{
FILE* fp;
fp = fopen("C:\\test.txt", "a");
if (fp == NULL)
{
return;
}
int c = 10;
fwrite(&c, sizeof(c), 1, fp);

fclose(fp);
}
以上函数在一个文件中写入二进制信息,我打开test.txt(原来为空文件)文件看到的信息为:
0D 0A 00 00 00
如果把int c = 10;改成int c = 9;或int c = 11;其信息为
09 00 00 00 和 0B 00 00 00
后面两个信息是在我预料之内的,但第一个写入的信息我却无法解决其因为为什么是
0D 0A 00 00 00 而不是 0A 00 00 00

我知道可能是我打开文件用的是文本方式,但我还是不知道为什么写入10和写入其他的数字不一样.
...全文
66 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rushman 2003-01-17
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1358/1358624.xml?temp=.6281397
gosirius 2003-01-17
  • 打赏
  • 举报
回复
在文本文件中用连着的0d(光标移到下一行) 0a(光标移到行首)表示一个换行符,历史遗留问题,在Windows上似乎不需要?不过记事本还必须这么做。所以我想是当你写入0a时,系统自动把它变成了0d0a吧??
bugfree 2003-01-17
  • 打赏
  • 举报
回复
My think is:
10 is "\n" on windows platform, if you write "\n" to file, the '\n' will convert to "\n\r" to write a carriage return. "\r" is 0x0D==13.
When you read out, it will convert "\n\r" to "\n".

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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