fopen读取二进制文件,若要用fopen函数以读的方式打开二进制文件

http://www.itjxue.com  2023-01-14 00:50  来源:未知  点击次数: 

打开二进制文件时,fopen函数可以用哪些打开方式?

rb 读写打开一个二进制文件,只允许读数据,文件必须存在。\r\nrb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。\r\nwb 只写打开或新建一个二进制文件;只允许写数据。\r\nwb+ 读写打开或建立一个二进制文件,允许读和写。\r\nab+ 读写打开一个二进制文件,允许读或在文件末追加数据。

若要用fopen()函数打开一个新的二进制文件,该文件要既能读也能写,则打开方式是

A)

"ab+"

文件不存在时要建立

然后打开一个二进制文件,进行读和追加

B)

"wb+"

文件不存在时要建立

打开一个二进制文件,使文件内容先为空,读和写

C)"rb+"

文件不存在

报错

存在:打开,读写二进制文件。

D)"ab":

文件不存在时要建立

然后打开一个二进制文件,进行末尾追加

题目要求打开一个新的二进制文件,该文件要既能读也能写,所以是B

Matlab中如何实现二进制文件的读写?

1)写二进制文件 \x0d\x0afwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,'precision') \x0d\x0a说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。 例6.8 将一个二进制矩阵存入磁盘文件中。 a=[1 2 3 4 5 6 7 8 9]; \x0d\x0a fid=fopen('d:\test.bin','wb') %以二进制数据写入方式打开文件 fid = \x0d\x0a 3 %其值大于0,表示打开成功 fwrite(fid,a,'double') ans = \x0d\x0a 9 %表示写入了9个数据 fclose(fid) ans = \x0d\x0a 0 %表示关闭成功\x0d\x0a\x0d\x0a2)读二进制文件 \x0d\x0afread函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为: [A,COUNT]=fread(fid,size,'precision') \x0d\x0a说明:其中A是用于存放读取数据的矩阵、COUNT是返回所读取的数据元素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。precision用于控制所写数据的精度,其形式与fwrite函数相同。 \x0d\x0a%写一维数据至数据文件 n=0:pi/10:4*pi; y=sin(n); \x0d\x0afip=fopen('C:\binary3.bin','wb'); fwrite(fip,Pxx,'double'); fclose(fip);

fopen打开一个新的二进制文件为什么包含b

fopen打开一个新的二进制文件为什么包含b,C语言fopen()打开文本文件与二进制文件的区别

在学习C语言fopen()函数后,知道它的第二个参数是标志字符串。如果字符串中出现'b',则表明是以打开二进制(binary)文件,否则是打开文本文件。

那么什么是文本文件,什么是二进制文件呢?

从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。

如何读取二进制文件

将文件以二进制模式打开,比如:fp=fopen("a.bin","rb");

利用二进制文件读取函数读取数据,比如:fread(buffer,1,256,fp);

关闭文件,fclose(fp);

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;

}

(责任编辑:IT教学网)

更多

推荐人物新闻文章