首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为什么一个正常的数用fwrite写入到文件中后会变成巨小的数~解决思路

2012-04-25 
为什么一个正常的数用fwrite写入到文件中后会变成巨小的数~部分代码如下:for (i 0 i Height i++){fo

为什么一个正常的数用fwrite写入到文件中后会变成巨小的数~
部分代码如下:

for (i = 0; i < Height; i++)
{

for (j = 0; j < Width; j++)
{
szPixel[i][j] = 10000 * exp((double)-((i - Center_X)*(i - Center_X) + (j - Center_Y)*(j - Center_Y))/20)+100;

//cout<<szPixel[i][j]<<" ";
}
//cout<<endl;

}


fwrite(szPixel, sizeof(unsigned int), Width*Height, file);


以上代码中:
Width = 64
Height = 64
Center_X = 30
Center_Y = 30

szPixel[][]是64*64的二维数组,元素类型为unsigned int

for循环内注释的那两条语句是我用于测试在屏幕上输出的数据,经检查输出是正常的,也就是0~10000之间的数字。问题在于fwrite这一句,写入文件后,所有大于0 的数字都变成科学计数法的类型,并且都是e-40数量级的~~~~~

不借,求指导~~~

[解决办法]
fwrite是以二进制写入的 你可以试试用fprintf
[解决办法]
 size_t fwrite(const void* buffer,size_t size,size_t count,FILE* stream);
  注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
  返回值:返回实际写入的数据块数目
  (1)buffer:是一个指针,对fwrite来说,是要输出数据的地址。
  (2)size:要写入内容的单字节数;
  (3)count:要进行写入size字节的数据项的个数;
  (4)stream:目标文件指针。
  (5)返回实际写入的数据项个数count
[size=14px][/size]
[解决办法]
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了

[解决办法]
楼主再读取来看看,数没变吧?
[解决办法]
可以先将数字格式化成string再输出

热点排行