我想阅读整个文件内容并将其打印出来,但是我遇到了段错误,我找不到代码有什么问题......
#include <stdio.h>
#include <stdlib.h>
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;
}
答案 0 :(得分:3)
您传递给fgets
(file_content
)的指针未初始化。它应该指向一个足够大的内存块,以包含指定数量(fsize
)的字节。您可以使用malloc
来分配内存。
char* file_content = (char*)malloc(fsize);
答案 1 :(得分:2)
char * file_content只是一个指针,你需要分配内存来存储字符串。
char * file_content;
file_content = malloc(fsize);
答案 2 :(得分:2)
“..但我收到了段错误”
显然是因为您试图写入未初始化的file_content
使用前为file_content
分配的内存
char * file_content =malloc(fsize);