gpt4 book ai didi

c - 分配内存并写入(使用 fread)作为参数传递给返回 SIGSEGV 的函数的字符串

转载 作者:行者123 更新时间:2023-11-30 18:53:21 26 4
gpt4 key购买 nike

有什么线索可以解释是什么原因造成的吗?这是函数:

int readfile(char** s, const char* filename) {
struct stat st;
int i;

if(stat(filename, &st) == -1)
return 0;

*s = malloc(st.st_size+1);
for (i=0; i<st.st_size+1; i++)
*s[i] = 0;

FILE* f;
f = fopen(filename, "rb");
fread(*s, 1, st.st_size, f);

return 1;
}

我是这样调用它的:

char* string;
if (!readfile(&string, "filename.ext"))
fprintf(stderr, "Problem reading file\n");

我可以轻松地将 fread 读取的内容复制到 readfile 函数内声明的字符串。

提前谢谢您。

最佳答案

这是一个运算符优先级错误:http://www.swansontec.com/sopc.html

我认为你想做的是:

for (i=0; i<st.st_size+1; i++)
(*s)[i] = 0;

关于c - 分配内存并写入(使用 fread)作为参数传递给返回 SIGSEGV 的函数的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33036770/

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