请教在C语言中创建dat 文件的问题

程序如下:#include<stdio.h>intmain(){FILE*f;intbuf;f=fopen("test.dat","wb");buf=255;fwrite... 程序如下:
#include <stdio.h>
int main ()
{
FILE *f;
int buf;
f = fopen("test.dat","wb");
buf = 255;
fwrite(&buf,sizeof(buf),1,f);
fclose(f);
return 0;
}
我知道wb是以2进制写入,
我的问题是,当buf<=255时,
得到的test.dat文件用ultraedit打开的到
16进制数能够正确转换成10进制数,如buf=255时,
test.dat文件打开为FF 00 00 00,也就是255的十六进制数,
但当buf>255时,得到的十六进制数就不正确了。
如buf=256时,为00 01 00 00,
buf=257 01 01 00 00,
buf=258 02 01 00 00,
buf=259 03 01 00 00,
我个人觉得是>256时,数值溢出了,然后又重新计数
不过也是瞎猜,请各位高手帮帮忙了
小弟是刚学C,,
thx in advance. :D
展开
 我来答
leibmitz
2008-03-11 · TA获得超过103个赞
知道答主
回答量:186
采纳率:0%
帮助的人:195万
展开全部
首先不是溢出
256不可能溢出int
其次那个十六进制的高低位不是你看到的那样
要换一下位置
FF 00 00 00-》00 00 00 FF
如buf=256时,为00 01 00 00 -》00 00 01 00
buf=257 01 01 00 00,-》 00 00 01 01
buf=258 02 01 00 00, 00 00 01 02
buf=259 03 01 00 00,
这根windows系统存储数据的高低位有关系
linux就会不一样,你要是有条件的话可以在linux上试一下

如果你不是很确定的话可以用fread读进来看看,就知道是不是出错了,那个高低位的问题你在查一下,具体的我记得不是很清楚,害怕给你说错了,但是高低位肯定要换的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式