如何修复函数返回C中局部变量错误的地址?

时间:2016-03-01 13:47:59

标签: c

我有这个方法读取文件,但是当我尝试运行它时,它给了我return (char *) buffer的错误。

错误:warning: function returns address of local variable [-Wreturn-local-addr]

char * readFile(char* filename, size_t chunk) {
    FILE *proc;
    size_t len = chunk;
    char * buffer[len];
    proc = fopen(filename, "r");
    if(proc) {
        if(buffer) 
            fread(buffer, 1, len, proc);
        fclose(proc);
        return (char *) buffer;
    }return "error";
}

我应该在此方法的main之外的方法之前创建缓冲区吗?

PS:我知道这可能是一个重复的问题。

1 个答案:

答案 0 :(得分:1)

首先,从return "error"判断,您希望buffer是一个字符数组,而不是一个指向字符的指针数组。先解决这个问题。

至于局部变量问题,只需将函数修改为:

void readFile (const char* filename, size_t chunk, char buffer[chunk])

这会强制调用者处理分配,而您的功能只需要关注其指定的任务。