fopen读取二进制文件,若要用fopen函数以读的方式打开二进制文件
打开二进制文件时,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;
}