读取文件时出现段错误

我想阅读整个文件内容并将其打印出来,但我得到一个段错误,我找不到代码有什么问题…

#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; } 

传递给fgetsfile_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);