文件管理 · 2022年8月26日

fread读取bin文件|c语言写bin文件

『壹』 fread函数,读取25288000字节的BIN文件,读不对!

当然读的不正确了,应该这样读fread(ch2,4,6322000,fp);如果还是不行,有可能是malloc这里不能成功分配那么大连续可用空间了。

『贰』 读一个后缀名为BIN的文件,里面都是一些十六进制,比如 00 00 82 00 fa 。。。。怎样一次性读四个字节出来

a是什么类型啊? unsigned char a[4];FILE *fp=fopen("x.bin","r");if(fp==NULL) return 0;fread(a,1,4,fp);fclose(fp); 这样就读好了啊。你说的a里面的内容还是00008200,字串还是数组?

『叁』 fread读文件,文件越读越多

估计是你编译工具的问题,你去掉后面的多条读看是不是还是一样的结果?我用gcc 测试了一下,没有问题

『肆』 fread读取字节小于实际文件里内容的字节时,fread是如何处理的

MSDN解释如下:fread returns the number of full items actually read, which may be less than count if an error occurs or if the end of the file is encountered before reaching count. Use the feof or ferror function to distinguish a read error from an end-of-file condition.你的Item size为4, 试图读够你指定的4*1个字节,但是读到一个字节就遇到文件结束,没读够4个字节,所以返回0.

『伍』 二进制的bin文件如何可以读取出来

#include<stdio.h>#defineN6voidmain(){inti,a[N]={1,2,3,4,5,6},b[N];FILE*fp;if(fp=fopen("data.bin","wb+")){fwrite(a,sizeof(int),N,fp);fclose(fp);}elseprintf("无法建立文件。");if(fp=fopen("data.bin","rb")){fread(b,sizeof(int),N,fp);fclose(fp);for(i=0;i<N;i++)printf("%d",b[i]);printf("");}elseprintf("无法打开数据文件。");}

『陆』 c语言写bin文件

用这几个函数fopen,fread,fwrite,fseek。FILE *fp;char *file1="文件名";unsigned char s[2];unsigned char tem[2];fp = fopen(file1,"rb");//读写方式打开二进制文件//fseek(fp,0, SEEK_CUR); fread(s,2,1,fp);//读取2个字节专fclose(fp);tem[0]=s[1];//交换属 tem[1]=s[0];fp = fopen(file1,"rb+");fseek(fp,0, SEEK_CUR);//当前位置第一个字节 fwrite(tem,2,1,fp);fclose(fp);

『柒』 matlab 打开bin文件 并转换成为txt文件,送上所有积分

读取二进制文件用fread函数,其调用格式为[A,COUNT]=fread(fid,size,'precision') 其中A是用于存放读取数据的矩阵、COUNT是返回所读取的数版据元权素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;precision用于控制所写数据的精度,%从数据文件读取一维数据 fip=fopen('C:\binary3.bin','rb'); [dat,num]=fread(fip,[2,20],'double');fclose(fip); %关闭文件 写数据至TXT文件用fprintf函数,其调用格式为fprintf(fid,format,A) fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵或变量。fp=fopen('c:\dat.txt','w');fprintf(fp,'%s',dat)fclose(fp)以上代码只是简单演示具体还需要知道你的二进制文件的数据格式和数据种类以及以何种形式写入文本文件(比如间隔为逗号?制表符?空格?等等)