В основном проблема сводится к следующему:
Я загружаю файл, записываю все символы в переменную char *, которая имеет malloc () длину файла.Затем я возвращаю эту переменную и печатаю ее, затем освобождаю () память для этой переменной и пытаюсь снова напечатать переменную, которая ее печатает.
Я очень плохо знаком с C, так что, вероятно, что-то не так в том, как я обрабатываю память для переменной, содержащей текстовое содержимое.
Я пытался использовать char [(ftell (file)] вместо malloc и char *, но затем функция ничего не возвращала. Вероятно, это потому, что это локальная переменная, которая освобождается, когда функция возвращает,да?
Вот как выглядит мой код:
main.c:
#include <stdio.h>
#include <stdlib.h>
#include "data/filesystem/files.h"
int main(){
char *filebuffer = retrieve_file_content("assets/test.txt");
printf("%s", filebuffer);
free(filebuffer);
printf("%s", filebuffer);
return 0;
}
files.c:
#include <stdio.h>
#include <stdlib.h>
char *retrieve_file_content(char* path){
FILE *file;
file = fopen(path, "r");
if(file){
fseek(file, 0L, SEEK_END);
char *filebuffer = malloc(ftell(file));
if(filebuffer == NULL){ return NULL; }
fseek(file, 0L, SEEK_SET);
int i = 0;
int buffer = getc(file);
while(buffer != EOF){
filebuffer[i] = buffer;
buffer = getc(file);
i++;
}
fclose(file);
return filebuffer;
}else{
return NULL;
}
}
test.txt:
heheasdasdas
вывод:
heheasdasdas
heheasdasdas
Заранее спасибо!