精华内容
下载资源
问答
  • 用C语言读取二进制文件并保存二维数组中文件读取代码 文件读取 一般二进制文件的存储都是数据流,那么如何将一直的数据流截取下来存我们所需要的的二维数组里,有很多方法。这里笔者自己写了一个小程序。 代码 ...

    用C语言读取二进制文件并保存到二维数组中

    文件读取

    一般二进制文件的存储都是数据流,那么如何将数据流截取下来存到我们所需要的的二维数组里,有很多方法。这里笔者自己写了一小段代码。

    代码

    
    ```c  
    #include<stdio.h>
    #include "su.h"
    #include "segy.h"
    
    int main()
    {
    	//input written by LEE
    	//read the file (binary)
    	FILE *fp;
    	float **buffer;
    	int nx=200,nz=200,iz,ix,x,y;
    	buffer=alloc2float(nz,nx);/*这里可以自己去开辟空间,
    	这个函数是seismic unix中的 这个函数的意义就是
    		float buffer[nz][nx];
    	*/
    	fp=fopen("v.bin","rb+");
    	//find the beginning of the file
    	fseek(fp, 0, sizeof(float));
    	//read the data
    	for(ix=0;ix<nx;ix++)
    	for(iz=0;iz<nz;iz++)
    	{
    	fread(&buffer[iz][ix],sizeof(float),nz,fp);
    	}
    	// output(the value in the binary)
    	printf("input the coordinates:");
    	scanf("%d %d",&x,&y);
    	printf("vlocity[%d][%d]=%f\n",y+1,x+1,buffer[y][x]);
    	
    	fclose(fp);	
    	
    }
    

    参考资料:
    link.https://www.runoob.com/cprogramming/c-function-fread.html
    link.https://wenwen.sogou.com/z/q883376502.htm

    展开全文
  • 1.为什么有这种需求 因为有些情况需要避免出现乱码。不管什么编码都是二进制的,这样表示为16进制就...最后,因为是4个一组,就先把4个存到数组,再读取吧。看后面的代码好了。 3.代码实例: #include #include <
  • 文章目录python保存二进制文件c语言读取二进制文件到数组后续疑问值得学习的文章 python保存二进制文件 python将float32类型的numpy数组以二进制形式保存到txt文本中 代码 with open("D:\\10GraduationProject\\...

    python将数据存为二进制,并用c读取

    python保存二进制文件

    python将float32类型的numpy数组以二进制形式保存到txt文本
    代码

    with open("D:\\xxx\\xxx\\xxx\\xxx\\conv1.txt",'wb') as f:
        f.write(checkpoint['state_dict']['conv1.weight'].flatten().numpy().astype('float32'))
    

    上述有三个值得注意的地方:
    1.必须是numpy数组,不能是list。numpy能达到目的就用numpy吧,list为什么不能保存也不管了。
    如果是保存list数组,将会出现如下错误
    在这里插入图片描述
    2.二进制体现在参数 “wb”
    3.保存为二进制文件,文件后缀名用 .txt 就行,不要用 .bin ,不要画蛇添足,我开始以为要用.bin 折腾了好半天。

    证明是真的二进制文件:
    (懒得下nodepad++读取二进制的插件了)
    在这里插入图片描述

    python读取二进制文件到numpy数组

    网上很多通过用struct实现的,试了下并没有读取成功
    通过如果你的程序需要处理大量的二进制数据,你最好使用 numpy 模块这篇文章学到了直接读入到numpy数组就行。
    在这里插入图片描述
    可以reshape成为numpy数组保存前的shape。
    conv1_weight=conv1_weight.reshape(16,1,3,3,3)

    c语言读取二进制文件到数组

    python中保存的数组是float32类型的,c端当然也要用float去装这些数据。
    代码:

    #include <stdio.h>
    int main()
    {
    	FILE *fp = fopen("D:\\10GraduationProject\\vedioData\\data_process\\ucf5\\fc6.txt", "rb");
    	fseek(fp, 0, SEEK_END);
    	int fileSize = ftell(fp);
    	int arraySize = fileSize / sizeof(float);
    	printf("arraySize:%d\n",arraySize);
    	fseek(fp, 0, SEEK_SET);
    	float* fc6_weight=new float[arraySize];
    	printf("len of float: %d\n", sizeof(float));
    	fread(fc6_weight, sizeof(float), arraySize, fp);
    	printf("%.18f ", fc6_weight[arraySize-1]);
    	delete[] fc6_weight;
    	fclose(fp);
    	return 0;
    }
    

    别忘记fclose(fp)了。上面的fclose是后面补加的。
    读取结果:
    在这里插入图片描述
    和python中的numpy的最后一个元素对比:
    在这里插入图片描述
    python保存二进制文件,以及c语言读取二进制文件到数组,几百兆的数据瞬间完成(目测不到1秒)
    完美,收工!!!

    后续疑问

    但存在一个问题
    在Debug x86模式下,出现如下错误:
    在这里插入图片描述
    我在预处理器中添加了
    _CRT_SECURE_NO_WARNINGS,问题依然在,不知为何
    在这里插入图片描述

    我用fopen_s呢,又出现这样的错误
    在这里插入图片描述
    不知道啥原因,有知道的朋友麻烦在评论区回复一下。
    改成 x64(并且在预处理器中添加_CRT_SECURE_NO_WARNINGS) 就没啥问题了。

    值得学习的文章

    C语言二进制方式读写文件数据
    python 保存二进制文件参考文档

    展开全文
  • #include<stdio.h> #include<stdlib.h> void main() { FILE* fp; char str[20][20]; int i; printf("请输入字符串:\n");...fp,"C:\Users\Reol\source\repos\String binary file\test.txt",

    #include<stdio.h>

    #include<stdlib.h>

    void main()

    {

    FILE* fp;

    char str[20][20];

    int i;

    printf("请输入字符串:\n");

    for (i = 0; i < 20; i++) {

    gets(str[i]);

    }

    if ((fopen_s(&fp,"C:\Users\Reol\source\repos\String binary file\test.txt", "w+b") == NULL)) /*"w+b",表示以“写”方式打开*/

    {

    printf("Can’t open file!\n"); 

    exit(0);

    }

    for (i = 0; i < 20; i++)   /*  写入文件  */

    {

    fputs(str[i],20, fp);  

    fputs("\n",20, fp);

    }

    fclose(fp);   /*关闭文件*/

    fopen_s(&fp, "C:\Users\Reol\source\repos\String binary file\test.txt", "r+b");

    char buf[50][50] = { 0 };

    fgets(buf, 200, fp);

    //3 关闭文件

         fclose(fp);

    return 0;

    }

    展开全文
  • 该程序使用C ++中动态分配的结构数组二进制文件中存储的数据进行加密和解密。 “ Encrypt.cpp”使用动态结构数组二进制文件读取数据,并以表的形式显示该数据。 该程序使用用户输入的加密密钥,通过凯撒...
  • int read(char[] c) 将读取到的字符保存到数组c,返回实际读到的字符数 read(char[] c,int off,int len) //将数据从off开始写到数组c,写入最大长度len字符 void close() 关闭流 -------使用Reader读文件步骤-------...

    1.使用字符流

    Reader类常用方法
    int read() 从输入流中读取单个字符
    int read(char[] c) 将读取到的字符保存到数组c,返回实际读到的字符数
    read(char[] c,int off,int len) //将数据从off开始写到数组c,写入最大长度len字符
    void close() 关闭流

    -------使用Reader读文件步骤-------

    (1)引入相关的类
    	import java.io.Reader;
    	import java.io.FileReader;
    	import java.io.IOException;
    (2)创建对象
    	Reader fr=new FileReader("文件");
    (3)读数据
    	char[] ch=new char[1024];
    	int len=fr.read(ch);
    	for(int i=0;i<len;i++){
    		System.out.print(ch[i]);
    	}
    (4)关闭输入流
    	fr.close();
    

    解决中文乱码问题:
    //获得本地平台的字符编码类型
    System.out.println(System.getProperty(“file.encoding”));

    //创建字节输入流
    FileInputStream fis=new FileInputStream(“D:\TestFile\hello.txt”);
    //创建字符输入流(Reader的子类)
    fr=new InputStreamReader(fis,“GBK”);

    -------使用FileReader和BufferedReader读文件步骤-------

    (1)引入相关的类
    	import java.io.FileReader;
    	import java.io.BufferedReader;
    	import java.io.IOException;
    (2)创建一个BufferedReader对象
    	Reader fr=new FileReader("文件");
    	BufferedReader br=new BufferedReader(fr);
    (3)读取数据
    	String line;
    	while((line=br.readLine())!=null){
    		System.out.println(line);
    	}
    	//br.readLine();读取一行数据,返回字符串
    (4)关闭流对象
    	br.close();
    	fr.close();
    

    Writer类常用方法
    writer(String str)//写入字符串
    writer(String str,int off ,int len)
    void close()
    void flush()刷新输出流

    -------使用Writer写文件步骤-------

    (1)引入相关的类
    	import java.io.Writer;
    	import java.io.FileWriter;
    	import java.io.IOException;
    (2)创建一个FileWriter对象
    	//Writer fw=new FileWriter("文件",true);
    	FileOutputStream fos=new FileOutputStream("文件,true);
    	fw=new OutputStreamWriter(fos, "GBK");
    (3)写数据
    	fw.write("我爱中国!");
    (4)关闭和清空流对象
    	fw.close();
    	fos.close();
    

    -------使用FileWtriter和BufferedWriter写文件步骤-------

    (1)引入相关的类
    	import java.io.FileWriter;
    	import java.io.BufferedWriter;
    	import java.io.IOException;
    (2)创建一个BufferedWriter对象
    	FileWrite fw=new FileWriter("文件");
    	BufferedWriter bw=new BufferedWriter(fw);
    (3)写数据
    	bw.write("我爱我家哟!");
    	bw.newLine();
    	bw.write("我爱我国哟!");
    	bw.flush();//刷新缓冲流
    (4)清空和关闭流
    	bw.close();
    	fw.close();
    

    2.读写二进制文件

    使用DataInputStream读写二进制文件步骤-------

    (1)引入相关的类
    	import java.io.FileInputStream;
    	import java.io.DataInputStream;
    	import java.io.FileOutputStream;
    	import java.io.DataOutputStream;
    	import java.io.IOException;
    (2)创建输入流对象
    	//读
    	FileInputStream fis=new FileInputStream("D:\\TestFile\\1.png");
    	DataInputStream dis=new DataInputStream(fis);
    	//写
    	FileOutputStream fos=new FileOutputStream("D:\\TestFile\\2.png");
    	DataOutputStream dos=new DataOutputStream(fos);		
    (3)读写文件
    	int len;
    	while((len=dis.read())!=-1){//读
    		dos.write(len);//写
    	}
    (4)关闭流对象
    	dos.close();
    	fos.close();
    	dis.close();
    	fis.close();
    
    展开全文
  • 1.matlab: fid=fopen("bif.bin","wb"); fwrite(fid,A','double');%A是矩阵,double是保存文件的数据类型。A'是A的转置,原因是,在matlab中数据是按列存放,c中是按...(1)c中使用fopen,读取到二数组中 int num_r
  • Reader类Reader类的常用...常用放法:int read() //从输入流中读取单个字符,返回所读去的字符数据int read(byte[]c) //从输入流中最多读取c.length个字符,保存字符数组C中,返回实际读取的字符数int read(byte[...
  • 该库的典型用法是通过网络传输的读/写二进制文件或二进制数据。 支持以下复杂的C类型: 结构 工会 位域 枚举 这些类型可以包括18个字节之间的任何传统数据类型(整数,无符号整数,布尔值和浮点数),数组...
  • 它是使用Docker或单个8MB静态链接Linux二进制文件的可部署解决方案。 yum-nginx-api使CI工具可用于上载RPM和管理yum存储库。 此项目中包含一个go包repojson ,可用于读取repodata目录并返回primary.sqlite。(bz2 ...
  • 今天在把bmp文件转为数组时, 用c库函数fread, fgetc..读出的长度总是不对, 看日志发现, 在读80000多字节时文件...文本方式读取二进制数据, 可能在文件结束之前将某段数据判定为文件末尾EOF, 所以结束读取( 举个例子,
  • <p>byte[] ImageData = new byte[4* 3 * 6]{<!...可以保存出来一个而二进制文件c;但是我想用采集的字符串生成图片࿰c;我想把字符串赋值byte数组中࿰c;请问有什么办法呢?</p>
  • 13.第十三章 文件.txt

    2019-11-08 16:33:27
    二进制文件是直接用数据的二进制形式存放的,即把内存中的数据按其在内存中的存储形式原样输出磁盘上存放。 程序中实现对文件的处理通常分三步: (1)打开文件:将程序与文件建立联系。 (2)操作文件:对...
  • pcf8563_i2c1_r8_ruoge_ov2640通过给RTC驱动增加设备节点读取秒钟成功+直接读取I2C1获取秒钟值20160626_2201.7z http://blog.csdn.net/21cnbao/article/details/7919055 在Android源码树中添加userspace I2C读写...
  • 写入.npy的优点是使用低级C ++ I / O(读取和fwrite)来提高速度,并使用二进制格式来实现大小。 .npy文件头负责指定数组的大小,形状和数据类型,因此不需要指定数据格式。 将以numpy格式编写的数据加载到C ++中...
  • 将该实例的源码,比如实例1的1.c文件(可以在001目录下找到), 拷贝tc编译器目录下,运行tc.exe,打开编译器, 按【F3】键或者“File->Open”菜单命令,打开1.c文件, 按【Ctrl+F9】键,或者“Run->Run”菜单...
  • 2.结构体:使用二进制形式将结构体变量写入文件,或者将文件读取到结构体变量中 c++: 0.内存4区,代码区,栈,堆,全局区; static ,const 的使用 1.引用:给变量或对象取别名,在函数传参时,使用引用,避免拷贝...
  • 全国计算机级C语言

    2010-09-22 20:27:53
    1.请编制函数ReadDat( )实现从文件HEX.IN中读取100个十六进 制数字符串数组xx中; 请编制函数H16To10(), 将xx中的十六进 制数转换成十进制数并把已转换的十进制数仍存放在字符串数组xx 中, 最后调用函数WriteDat...
  • 2021-01-27 字符流

    2021-01-27 18:45:01
    文件分为 文本文件 二进制文件 字符流 一般用于文本文件操作 基类Writer Reader 实现类 FileWriter FileReader 通过 字符串数组 读取 int xxx.read(); 返回字符ascii码 int xxx.read(char[] c); 返回读的长度 @...
  • 通过该工具调用rslogo.exe生成samsung.c(其内容为一个有600多K的数组),将samsung.c中的数组读取出来并以二进制的方式保存kmt_iii.sys文件中。生成的kmt_iii.sys文件通过单独的刷机就可以修改wince的启动背景...
  • 二进制模式下,文件读取为32位整数值的数组。 每个值都有其对应的地址,从0开始,一直递增array_length - 1 。 例子: 01050607 // first instruction - c = a + b 00010007 // second instruction - print ...
  • //复制“cd”字符串到数组 cP_File_Name[5] = '\0';//将末尾增加字符串结束标志 strcat(cP_File_Name,argv[2]);//连接输入的字符串,形成 "cd 目录"的格式 system(cP_File_Name);//使用system函数切换至指定...
  • 读取和写入图像,二进制和ASCII表扩展名。 读取表列和行的任意子集,而无需将所有数据加载内存中。 读取图像子集而不读取整个图像。 将子集写入现有图像。 写入和读取可变长度表列。 使用类似于numpy数组的...
  • 但对于传输大块的二进制数据显得力不从心,对于传输这类数据,浏览器采用了另一种编码方式,即 "multipart/form-data" 的编码方式,采用这种方式,浏览器可以很容易的表单内的数据和文件一起。这种编码方式先定义好...
  • 实例002 十进制转换为二进制 3 实例003 n进制转换为十进制 4 实例004 以IP地址形式输出 5 1.2 条件判断 6 实例005 3个数由小大排序 6 实例006 a2+b2 8 实例007 整倍数 9 实例008 判断闰年 10 实例...
  • 18.4.2 读二进制文件 18.5 读/写文本文件 18.5.1 写文本文件 18.5.2 读文本文件 18.5.3 其他读/写文本文件的函数 18.6 文件内的位置控制 18.7 导入数据 18.8 本章小结 第19 章MATLAB 编译器 19.1 ...
  • 其意义是打开C驱动器磁盘的根目录下的文件hzk16, 这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“\\ ”中的第一个表示转义字符,第二个表示根目录。使用文件的方式共有12种,下面给出了它们的符号...
  • 尽管有JavaScript和其他高级语言,但wasm二进制文件仅支持: i32 :32位整数 i64 :64位整数 f32 :32位浮点 f64 :64位浮点 这意味着:没有对象,没有数组,没有字符串。 例如-如果我们要编写一个简单的sum(a,b...
  • 第5周总结 首先用二进制方式向文件读写一组数据,使用fread函数和fwite函数完成。这里读写的数据是指一串固定长度的字节,比如...C 库函数 size_t fread从给定流 stream 读取数据ptr 所指向的数组中。 声明函数库s...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 164
精华内容 65
关键字:

c读取二进制文件到数组