微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。