gpt4 book ai didi

c++ - 将文件数据读入二维数组时出现 EXC_BAD_ACCESS

转载 作者:行者123 更新时间:2023-11-28 08:05:09 25 4
gpt4 key购买 nike

我正在尝试将文件数据加载到二维数组中,但在调用 fread 时出现 EXC_BAD_ACCESS 错误。

这就是我尝试读取文件的方式:

char data[21][23];
FILE* file = fopen("1.txt", "r");
fread(data, 1, sizeof(data), file); // EXC_BAD_ACCESS

最佳答案

在 C 中,二维数组 (nxm) 表示为 n 个指向 n 个大小为 m 的数组的指针的数组。

fread 将读入给定指针指向的内存区域。

在您的情况下,fread 会将数据写入应该存储 n 个指针的位置。您不能简单地对 C 中的二维数组使用 fread() 或任何类似方法。

相反,首先读入一个大小为 m*n 的一维数组,然后将指向“行的开头”的指针复制到一个指针数组中:

char tmp[21*23];
FILE* file = fopen("1.txt", "r");
fread(tmp, 1, sizeof(tmp), file);
char* data[21];
int i;
for(i = 0; i < sizeof(data)/sizeof(char*); i++) {
data[i] = &tmp[23*i];
}

更新:示例代码包含一个错误(我使用了 sizeof(data),在 64 位系统上,它将返回所需值的 8 倍,导致另一个 EXC_BAD_ACCESS ;))

关于c++ - 将文件数据读入二维数组时出现 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10430591/

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