关于什么原因的任何线索?这是功能:

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/

10-15 02:13