gpt4 book ai didi

c - 从文件读取时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:28 27 4
gpt4 key购买 nike

我有以下功能:

void read_file(char* path, char** data)
{
FILE* file = NULL;
size_t size, result = 0;

*data = NULL;
file = fopen(path, "rb");

if (file == NULL)// error opening file
{
return;
}

fseek(file, 0, SEEK_END);
size = ftell(file) + 1;
rewind(file);

*data = (char*)malloc(size);
if(*data == NULL)
return;

result = fread(*data, 1, size, file);
if (result != size - 1)// error reding file
{
*data = NULL;
}
printf("LINE=%u\n", __LINE__);
(*data)[size-1] = '\0';

printf("LINE=%u\n", __LINE__);
fclose(file);
return;
}

我在两个 printf("LINE=%u\n", __LINE__); 语句之间的行上遇到了段错误。我不明白这是为什么。当我查看这一行时,似乎 (*data) 会有一种 (char *) 类型,它肯定可以与索引运算符一起使用[]

我错过了什么?

最佳答案

可能 if (result != size - 1) 测试失败,然后您将 *data 重置为 NULL(这是一个内存泄漏,顺便说一句),然后您尝试写入 (*data)[size-1] - 糟糕!

关于c - 从文件读取时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7665123/

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