C++ 从二进制文件读取结构
我在从文件加载数据时遇到问题。我放了一个箱子 在C++ 从二进制文件读取结构,c++,file,C++,File,我在从文件加载数据时遇到问题。我放了一个箱子 在while循环的第一次迭代中,此文件将关闭。一旦关闭,文件将不再有效。但接下来要发生的事情是: while(!feof(arquivo)){ 。。。它将再次尝试检查文件的状态,以检查循环是否会发生另一次迭代。但是这个文件不再有效;因此,这是未定义的行为 您的错误是您的代码在关闭文件后继续使用该文件。一旦你打电话给fclose,游戏就结束了。您不能触摸文件对象,也不能以任何方式引用它。它不见了。它不复存在了。不再是了。它加入了唱诗班。这是一个ex-
while
循环的第一次迭代中,此文件将关闭。一旦关闭,文件
将不再有效。但接下来要发生的事情是:
while(!feof(arquivo)){
。。。它将再次尝试检查文件
的状态,以检查循环是否会发生另一次迭代。但是这个文件
不再有效;因此,这是未定义的行为
您的错误是您的代码在关闭文件后继续使用该文件。一旦你打电话给fclose,游戏就结束了。您不能触摸文件
对象,也不能以任何方式引用它。它不见了。它不复存在了。不再是了。它加入了唱诗班。这是一个ex-文件
它可能有助于将代码行放在崩溃的地方。实际上它不需要循环。写一个由20个元素组成的数组,读一个由20个元素组成的数组。它可能会崩溃,因为第二个循环试图读取超过文件结尾的内容。它不断重复“已进入while循环”,直到崩溃。它是如何崩溃的?欢迎使用StackOverflow。请回顾在互联网上给出问题的好例子的要素,例如:或。您的问题是否需要三个结构定义,或者您能否用一个结构定义同样好地演示您的问题部分?一个结构是否需要三个字段,或者一个结构是否也可以显示您的问题?您还需要提供问题的所有部分——如果它依赖于一个文件,您也需要它。注意“编辑”按钮以改进问题。注意:1-fclose(…)
在while
循环终止之前不应调用。2-尝试将“rb”
传递到fopen(…)
而不是“rb+”
。这可能是安全的,但是+
会额外打开文件进行写入。我改变了这一点,并在原始帖子中添加了更多内容
fclose(arquivo);
while(!feof(arquivo)){