Мой файл не читается до конца при использовании fread()
, а размер возвращается из stat()
Руководства. Я проверил:
http://man7.org/linux/man-pages/man2/stat.2.html
http://man7.org/linux/man-pages/man3/fread.3.html
Вот мой код:
FILE *file = fopen(path, "r");
if (file == NULL) {
printf("failed!\n");
return 0;
}
struct stat fileattribs;
size_t size;
if (stat(path, &fileattribs) < 0)
return 0;
size = fileattribs.st_size;
char *buff = (char *) malloc(sizeof(char) * (size + 1));
fread(buff, sizeof(char), size, file);
buff[size] = '\0';
Вот файл, который я пытаюсь прочитать:
#version 330 core
out vec4 light_fragment_color;
uniform vec3 object_color;
uniform vec3 light_color;
void main(void) {
light_fragment_color = vec4(light_color * object_color, 1.0);
}
Если я увеличу переменную размера (например, на 5) в приведенном выше коде, то чтение будет успешным, но произойдет ошибка (да, это была глупая идея ...).
Как правильно прочитать файл с функциями stat () и fread ()?