gpt4 book ai didi

c - 我无法从文件中读取超过 49 个结构数组

转载 作者:行者123 更新时间:2023-11-30 17:28:10 25 4
gpt4 key购买 nike

我有这个代码。当我编译并执行它时,没有显示错误,但是,从第 50 个元素到最后一个元素,这些值超出了 rand() 的区间(我认为是从 0 到 32767)。这是非常出乎意料的,因为程序继续运行,没有显示任何写入错误消息。

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#define MAX 100

using namespace std;

struct num {
int val;
};

int main() {
FILE *f, *g;
num data[MAX];

f = fopen("file1.txt", "w");
if(f == NULL) {
printf("Error\n");
exit(0);
} else {
for(int i = 0; i < MAX; i++) {
data[i].val = rand();
}
fwrite(data, sizeof(num), MAX, f);
if(ferror(f)) {
exit(0);
}
fclose(f);
}

num data1[MAX];
g = fopen("file1.txt", "r");

if(g == NULL) {
exit(0);
} else {
fread(data1, sizeof(num), MAX, g);
if(ferror(g)) {
printf("Error\n");
exit(0);
}
fclose(g);

for(int i = 0; i < MAX; i++) {
printf("val %d : %d\n", i+1, data1[i].val );
}
}
}

最佳答案

我认为文件打开模式有问题,您选择了依赖于系统的文本模式,将其更改为二进制模式,一切都会按预期工作

文本模式取决于应用程序运行的环境,在不同的输入/输出中可能会发生一些特殊字符转换根据系统特定文本的文本。尽管在相同的环境中,二进制文件模式不会发生任何转换。 二进制模式无需任何转换即可保存和读取数据。

关于c - 我无法从文件中读取超过 49 个结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26106227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com