gpt4 book ai didi

在 for 循环中调用 fread 失败

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:05 25 4
gpt4 key购买 nike

我有以下代码(仅用于基准测试目的)。

代码包括创建一个简单的字符数组,将其转储到文件,然后在 for 循环中读取它。为什么读取函数由于 fopen 中的失败而失败(fread 返回 NULL),但是如果我注释掉 循环?

我正在使用 Apple LLVM 版本 8.0.0 (clang-800.0.42.1),并使用 clang -o rw rw.cpp 进行简单编译

int create(int, char**) {

char a[256*256];
for (int i = 0; i < 256*256; i++)
a[i] = char(i);

// Dump to File
FILE* f = fopen("file.bin", "wb");
fwrite(a, 256*256*sizeof(char), 1, f);
fclose(f);

return 0;
}



int read(int, char**) {

// IF this loop is commented out, the code works. Otherwise fails
for (int i = 0; i < 10000; i++) {

char a[256 * 256];

FILE* f = fopen("file.bin", "rb");

// Fails at this assertion
assert(f);

fread(a, 256*256*sizeof(char), 1, f);

for (int k = 0; k < 256 * 256; k++) {
if (a[k] != char(k)) {
printf("Bad Value %d %d\n", k, a[k]);
}
}
}

return 0;

}

最佳答案

您永远不会关闭在读取函数的 for 循环内打开的文件。您很可能用完了文件句柄。

关于在 for 循环中调用 fread 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42180143/

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