关于文件问题

houyajin 2010-12-13 09:16:56
这个是上次提的问题的。http://topic.csdn.net/u/20101206/17/b9c7e795-98bb-46fa-8992-0bb4400400b2.html
先补一下后来写的代码

#include <stdio.h>
#include <string.h> //mesmet
#include <stdlib.h> //malloc

typedef char BYTE ;
typedef float WORD ;

int main()
{
int i,j;
FILE *fp1,*fp2;

BYTE *data1=(BYTE *)malloc (512*512*6*sizeof(BYTE));
WORD *data2=(WORD *)malloc (512*512*sizeof(WORD));
BYTE *filename=(BYTE *)malloc(20*sizeof(BYTE));

if((fp1=fopen("bhtmref.img","rb"))==NULL)
{
printf("Can not open file!\n");
return 0;
}

//初始化
memset(data1,0,512*512*6*sizeof(BYTE));
memset(data2,0,512*512*sizeof(WORD));
memset(filename,'\0',20*sizeof(BYTE));

//六个循环也控制输出的六个文件
for(i=0;i<6;i++)
{

sprintf(filename,"%s%d","samples",i);
if((fp2=fopen(filename,"wb"))==NULL)
{
printf("Can not open file!\n");
return 0;
}

//每次读一块,即512*512
fread(data1,sizeof(BYTE),512*512,fp1);

//转换为实型
for(j=0;j<512*512;j++)
{
data2[j]=((int)data1[j])*1.0;
}

//把一块数据从fp2写到文件中
fwrite(data2,sizeof(WORD),512*512,fp2);
}

return 0;
}

这个还是上面链接的问题,结果都是一样的。但是我还是有问题。
一、写成浮点二进制的文本和浮点二进制的文件有什么不同?
二、规格化如何理解?浮点规格化的和没有规格化的不同是不是根据定义,但是我跟这个程序如何的联系起来。是否我最被初读的数都是没有规格化的。
三、什么时候该规格化?什么时候不需要规格化?
四、是否fprintf里面的类型已经是规格化了的。
五、Q342210738的回答我没有看懂的。


...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
houyajin 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bobo364 的回复:]

1.貌似第一个问题就是r,rb的问题,一个写入文件是用asc码之类的,而另一个是直接写入2进制的
2.规格化应该指iee754的那个标准,把浮点数按照指定长度,读入寄存器,整数多少位,小数多少位,点号在那里
3.应该所有的浮点数都是规格化的,除非你用的是自己写的数据结构,比如用int数组表示一个浮点数
4.应该是,我不太清楚,欢迎楼下指正
[/Quote]

第一个明白,第二个我知道,但是不是很理解,也不明白。只是知道格式。

谢谢。
bobo364 2010-12-13
  • 打赏
  • 举报
回复
1.貌似第一个问题就是r,rb的问题,一个写入文件是用asc码之类的,而另一个是直接写入2进制的
2.规格化应该指iee754的那个标准,把浮点数按照指定长度,读入寄存器,整数多少位,小数多少位,点号在那里
3.应该所有的浮点数都是规格化的,除非你用的是自己写的数据结构,比如用int数组表示一个浮点数
4.应该是,我不太清楚,欢迎楼下指正
houyajin 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 six_dimensional 的回复:]

虽然不会,但是帮你顶一下!
[/Quote]

谢谢,看着还没有人回。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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