Получите ошибку сегмента при чтении файла

Я хочу прочитать содержимое всего файла и распечатать его, но я получаю ошибку сегмента, я не могу найти, что не так с кодом …

#include  #include  int main() { FILE * file; long fsize; file = fopen("./input.txt","r"); if(file != NULL){ //get file size fseek(file,0,SEEK_END); fsize = ftell(file); rewind(file); // print char * file_content; fgets(file_content,fsize,file); puts(file_content); } else{ printf("open failure\n"); } fclose(file); return 0; } 

    Указатель, который вы передаете fgets ( file_content ), не инициализирован. Он должен указывать на блок памяти, достаточно большой, чтобы содержать указанное число ( fsize ) байтов. Вы можете использовать malloc для выделения памяти.

     char* file_content = (char*)malloc(fsize); 

    char * file_content – это просто указатель, вам нужно выделить память для хранения строки.

     char * file_content; file_content = malloc(fsize); 

    «… но я получаю ошибку сегмента»

    Очевидно, потому что вы пытаетесь написать неинициализированное file_content

    Выделенная память для file_content перед использованием

     char * file_content =malloc(fsize);