当前位置:首页 » 电脑资讯 » 为什么二进制文件不能读取

为什么二进制文件不能读取

发布时间: 2022-12-10 01:36:20

A. 如图,请问在labview中读取二进制文件这个错误是为什么

“读取二进制文件”函数的“数据类型”接线端弄错了。
比如你文件里存了一个{double和U8组成的}簇,是8+1共9个字节。
但是你程序里的数据类型弄成了一个{double和i32组成的}簇,是8+4共12个字节,程序在文件中读到9个字节之后还需要继续读,直到读到12个字节,但是文件已经到达结尾了,于是就提示这个错误啦。

B. Bin二进制文件读取问题

二进制的文件一般正常情况下是不能直接读出来的哦,用一般的软件能打开文件,但也只能一段一段的读,再说每个软件里的数据库可能都是加了密的。不一定能解得开。

C. c++ 从二进制文件里 无法读出数据 并显示到屏幕上,求大神解答

试一下把生成文件和读取文件的两段代码都开启并运行, 你会发现这个程序不会报错。为什么呢?

string 类并非单纯的char数组,里面有其他C++标准库用来实现string类各种方便功能所需的变量。string类会自己动态分配一块内存用来存储你的信息。这段内存的位置在每次运行程序的时候不同。 你在序列化你的string的时候,他会把string内部记录内存地址变量也序列化。两次运行,如果分配到的动态内存地址不同, 你的ok类在调用destructor的时候就会试图destruct string name, 然而name里面的地址是错误的,所以就会在释放内存的时候出错。

D. fread函数为什么读取二进制文件会出问题

在读写二进制文件的时候,必须确保文件的打开形式是以 二进制读写的形式打开的, 即:文件的打开形式必须是 "rb", "wb" 要不然,读写数据的时候,就会出现错误。
函数使用说明:

FILE * fopen(const char * path,const char * mode);
参数path字符串包含欲打开的文件路径及文件名,
参数mode字符串则代表着流形态。mode有下列几种形态字符串:
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
rb+ 读写打开一个二进制文件,只允许读写数据。
rt+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。
有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。
返回值
文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中
附加说明
一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。

fread函数和fwrite函数
1.函数功能
用来读写一个数据块。
2.一般调用形式
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
3.说明
(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
(2)size:要读写的字节数;
(3)count:要进行读写多少个size字节的数据项;
(4)fp:文件型指针。

E. 为什么有些二进制文件读取不出东西

试一下把生成文件和读取文件的两段代码都开启并运行,

string 类并非单纯的char数组,里面有其他C++标准库用来实现string类各种方便功能所需的变量。string类会自己动态分配一块内存用来存储你的信息。这段内存的位置在每次运行程序的时候不同。 你在序列化你的string的时候,他会把string内部记录内存地址变量也序列化。两次运行,如果分配到的动态内存地址不同, 你的ok类在调用destructor的时候就会试图destruct string name, 然而name里面的地址是错误的,所以就会在释放内存的时候出错。

F. c++读取二进制文件出错

原因很简单,包含string类的struct不能直接把struct里面的内容存到文件,直接存的话只会存了string这个类的基本信息,string自己动态分配的东西你存不下来,所以会丢失string里面的内容

G. 为什么Excel无法打开二进制数据

原因:当前保存的格式为早期Excel版本的格式,所以会弹出该提示。

在微软发布office 2007以后,office文件的存储方式由二进制文件转变成了xml格式文件。所以在office 2007以前的版本即office 2003,office 2000,office xp,office 97这些软件版本的存储文档统称为早期版本。 

由于文件格式由二进制文件转化为xml文件格式,xml格式比二进制文件的存储信息量大,而且压缩都更高,而且有很多特性是二进制文件所不具备的,所以office 2007及以上版本的excel打开早期版本的二进制文件时会对工作簿进行兼容性检查,因为二进制文件有很多的东西不能保存上,必须存储成xml格式的文件,否则就造成功能格式数据丢失的情形。

(7)为什么二进制文件不能读取扩展阅读:

解决方案就是把这个文件另存为“.xlsx”格式即可,另存步骤如下:

所需材料:Excel 2007演示。

一、首先点击Excel 2007窗口左上角的“Office按钮”(其它版本点击“文件”菜单)。

热点内容
双十二淘宝首页为什么变黑白 发布:2024-11-05 22:18:24 浏览:800
为什么猫耳不能微信充值 发布:2024-11-05 22:18:02 浏览:710
为什么卸载爱奇艺找不到 发布:2024-11-05 21:07:59 浏览:74
为什么一到高三历史就学不好 发布:2024-11-05 21:06:55 浏览:859
花生米叶子到了晚上为什么会熟 发布:2024-11-05 19:16:55 浏览:294
为什么学美术找不到工作 发布:2024-11-05 19:10:54 浏览:344
为什么我的电脑总是禁用输入法 发布:2024-11-05 19:06:46 浏览:929
男生为什么叫你大傻牛 发布:2024-11-05 18:48:37 浏览:964
为什么闭上眼眼睛会疼 发布:2024-11-05 18:47:43 浏览:869
手机电容测量为什么是红笔接地 发布:2024-11-05 18:41:58 浏览:815