我有这个方法读取文件,但是当我尝试运行它时,它给了我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:我知道这可能是一个重复的问题。
答案 0 :(得分:1)
首先,从return "error"
判断,您希望buffer
是一个字符数组,而不是一个指向字符的指针数组。先解决这个问题。
至于局部变量问题,只需将函数修改为:
void readFile (const char* filename, size_t chunk, char buffer[chunk])
这会强制调用者处理分配,而您的功能只需要关注其指定的任务。