0
该程序收到一个指向const char *数据类型的指针,将文本文件从磁盘加载到内存中,并传递生成的char []的第一个索引的地址返回(基本上将文件内容作为“字符串”传回)。从磁盘加载文件,加载一些额外的字符
这工作得很好,虽然它有时传回一些额外的字符与文件内容。
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
char* loadShaders(char* PATH) {
FILE *fp = fopen(PATH, "rb");
if (fp == NULL) {
perror("[ctb.h] loadShaders() ");
printf("[ctb.h] loadShaders() recieved file path: %s\n", PATH);
exit(-1);
}
fseek(fp, 0, SEEK_END);
long fsize = ftell(fp);
rewind(fp);
char* shader = malloc(fsize + 1);
fread(shader, fsize, 1, fp);
shader[fsize + 1] = '\0';
fclose(fp);
return shader;
}
当它通过额外的字符后面,结果看起来是这样的:
#version 330 core
layout (location = 0) in vec3 aPos;
void main() {
gl_Position = vec4(aPos, 1.0);
}�
正如你可能已经猜到了,“”不属于。
对此提出建议?
你不意味着:'着色器[FSIZE] =“\ 0 “;'? –