读取文件时出现段错误

时间:2013-09-09 15:35:48

标签: c macos segmentation-fault

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

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

3 个答案:

答案 0 :(得分:3)

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