写入文件二进制的问题

不录 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和写入其他的数字不一样.
...全文
3 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过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".

回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告