C语言 为什么此功能会出错



这已经困扰了我一段时间;这个函数甚至不返回,它只是段错误。我指定了一个正确的文件位置,我在函数中的每个可能点检查错误,我不明白?

GLchar* getShaderString(const GLchar* file_path){
    FILE* srcfile = NULL;
    if(!(srcfile = fopen(file_path, "r")))
        return(NULL);
    fseek(srcfile, 0l, SEEK_END);
    long len;
    if((len = ftell(srcfile)) == -1)
        return (NULL);
    fseek(srcfile, 0l, SEEK_SET);
    GLchar* buff;
    if(!(buff = malloc(len + 1)))
        return (NULL);
    fread((GLvoid*)buff, len, 1, srcfile);
    fclose(srcfile);
    buff[len + 1] = '';
    return (buff);
}
buff[len + 1] = '';

应该是:

buff[len] = '';

数组中有len + 1个元素,最后一个元素位于索引len

fopen 适用于const char*而不是const GLchar*

另外,buff[len+1] = '';应该是buff[len] = '';的。

相关内容

  • 没有找到相关文章

最新更新