问题描述
所以我有这个函数来读取文件,分配内存,并将文件内容放入缓冲区。不过,我最后总是得到垃圾数据,所以我需要一种方法来终止缓冲区。
#include "GetText.h"
void GetText(const char* filename,char** buffer)
{
FILE* file = fopen(filename,"rb");
long file_lenght;
if(file)
{
fseek(file,SEEK_END);
file_lenght = ftell(file);
rewind(file);
*buffer = (char*) malloc(file_lenght + 1);
fread(*buffer,1,file_lenght,file);
*buffer[file_lenght] = '\0'; //This line crashed program
fclose(file);
}
}
解决方法
由于括号运算符的优先级高于指针取消引用,因此您需要在索引之前取消引用 buffer,如下所示:
(*buffer)[file_lenght] = '\0';
在您的程序中,您还需要确保 malloc 成功。