本文目录一览:
C语言怎么读取二进制文件中的数据放到一个300×300的二维数组里面
用 fopen 打开文件时 设 "rb" --用二进制方法打开,用于读
用 fread 读取数据,函数原型是:
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
各参数意义,请查编译器帮助文件,这里就不开课了。
300×300 的数组需要的内存量较大,可动态分配,或用 全局量。
下面是程序例子。先建了一个2进制文件,里面存了300*300个float型数据。然后读这个文件里的内容。
#includestdio.h
float a[300][300];
int main()
{
FILE *fin, *fout;
int i,j;
for (j=0;j300;j++) for (i=0;i300;i++) a[j][i]=j*100+i;
fout=fopen("a.txt","wb");
for (j=0;j300;j++)
fwrite(a[j][0],sizeof(float),300,fout);
fclose(fout);
for (j=0;j300;j++) for (i=0;i300;i++) a[j][i]=0; //数组清零
fin=fopen("a.txt","rb"); //打开输入文件
for (j=0;j300;j++)
fread(a[j][0],sizeof(float),300,fin); //读文件
fclose(fin); //关闭文件
// 下面输出文件的左上角100个数据,和右下角100个数据供检查参考。
for (j=0;j10;j++) {
for (i=0;i10;i++)printf("%3.0f ",a[j][i]); printf("\n");}
printf("\n");
for (j=290;j300;j++){
for (i=290;i300;i++)printf("%g ",a[j][i]); printf("\n");}
return 0;
}
c语言怎么读取二进制文件?
main()
{
FILE * stream;
int i;
stream = fopen("/tmp/fwrite","r");
fread(s,sizeof(struct test),nmemb,stream);
fclose(stream);
for(i=0;inmemb;i++)
printf("name[%d]=%-20s:size[%d]=%d/n",i,s[i].name,i,s[i].size);
}
供参考
怎么在读入文件前获得文件大小【C语言版】
如果文件大小指的是你从C
程序中可以读进的字符数量,
要得到这个精确的数字可能困难或不可能。
Unix
系统函数stat()
会给出准确的答案。有些系统提供了类似Unix
的stat()函数,
但只返回一个近似值。你可以调用fseek()
搜索到文件尾,
再调用ftell(),
或者调用fstat(),
然而这些方法都有同样的问题:
fstat()
不可移植,
通常返回和stat()一样的值;
ftell()
并不保证可以返回字符计数,
除非是用于二进制文件,
但是,
严格来讲,
二进制文件并不一定支持fseek
搜索到SEEK
END。某些系统提供filesize()
或filelength()
的函数,
但是它们明显的不可移植。你是否确定你必须预先知道文件大小?作为一个C
程序最准确的方法就是打开文件并读入,
也许可以重新整理代码,
使其边读入边计算文件大小。