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语言调用.
所有文件都可以看成二进制型的
用f1=fopen(“bbb.txt”,”wb”);
来创建,和”w”区别在于
打印”\n”时
“w”是2字节,0x0d
0x0a
而”wb”是1字节,0x0a
二进制数据这样写入
比如是个int
a;
fwrite(a,sizeof(int),1,f1);
数组就不用加了
C语言中如何将一个数组导入到文件中?
使用文件操作函数写入文件即可。
对于数组type a[N], 要将其写入文件有两种方式可以使用。
1 将数组以二进制方式写入文件。如
fwrite(a, sizeof(a), 1, fp);
可以将数组整体以二进制方式写入文件中。
2 按照元素,依次写入文件。具体写入格式与数组的类型有关。如为int数组可以写作:
int i;
for(i = 0; i N; i++)
fprintf(“%d,”, a[i]);
两种方法各有优缺点:
1 代码量上,第一种方式更简单高效;
2 运行效率上,第一种方法的执行效率更高;
3 文件空间大小上:
如果数组中的字符串元素较多,那么二者写入后目标文件大小相似,或者第二种方式占用的空间较小。
如果数组中的整型或浮点型数据较多,那么第一种方式占用的空间较小。
4 目标文件可读性:
第一种方法得到的文件是二进制文件,需要用专门的阅读器打开,且必须是专业人士才可以读懂。
第二种方法更直观,直接打开文本文件就可以阅读输出结果。
c语言怎么二进制文件操作?
主要就是二进制文件的读写、结构体的定义和使用。
fopen函数 以 “ab+” 方式打开文件,用fwrite函数写入内容; “b” 方式打开文件,读取内容;
急求!C语言中将二进制文件写入数组并输出为ASCII文件格式!
下面是刚写的程序
#includestdio.h
#includemath.h
void
main()
{
char
n;
int
a[100],i,j=0,m;
printf(“请输入二进制码的位数(小于100位)\n”);
scanf(“%d”,m);
printf(“请输入该二进制码,每个二进制码之间用enter隔开\n”);
for(i=0;im;i++)
scanf(“%d”,a[i]);
for(i=0;im;i++)
j+=a[i]*pow(2,m-i-1);
printf(“%d\n”,j);
n=j+’0′;
printf(“该二进制文件的ASCll码是:
\n”);
printf(“%d\n”,n);
}你可以根据自己的需要更改要输入的二进制的量
c语言中采用二进制文件存储数据的问题
1、二进制文本使用fopen函数的二进制模式“rb”就可以打开。对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。 C语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。
2、fopen的函数原型:FILE * fopen(const char * path,const char * mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
3、例程:
#include stdlib.h
#include stdio.h
int main ()
{
FILE * fpPhoto, * fpText, * fpTarget ;
int iRead ;
char szBuf[100] ;
printf (“请输入第一个文件名(jpg):\n”) ;
gets (szBuf) ;
fpPhoto = fopen (szBuf, “rb”) ;
printf (“请输入第二个文件名(txt):\n”) ;
gets (szBuf) ;
fpText = fopen (szBuf, “rb”) ;
printf (“请输入目的文件名(jpg):\n”) ;
gets (szBuf) ;
fpTarget = fopen (szBuf, “wb”) ;
if (!fpPhoto || !fpText || !fpTarget)
{
printf (“打开文件失败!\n”) ;
system(“pause”) ;
return -1 ;
}
while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpPhoto)) 0)
fwrite (szBuf, 1, iRead, fpTarget) ;
while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpText)) 0)
fwrite (szBuf, 1, iRead, fpTarget) ;
fclose (fpPhoto) ;
fclose (fpText) ;
fclose (fpTarget) ;
return 0 ;
}