如何空终止作为参数传递的指针

问题描述

所以我有这个函数来读取文件,分配内存,并将文件内容放入缓冲区。不过,我最后总是得到垃圾数据,所以我需要一种方法来终止缓冲区。

#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 成功。