2

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

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

3 回答 3

4

您传递给fgets( file_content) 的指针未初始化。它应该指向一个足够大的内存块以包含指定fsize的字节数( )。你可以用它malloc来分配内存。

char* file_content = (char*)malloc(fsize);
于 2013-09-09T15:38:28.313 回答
2

char * file_content 只是一个指针,需要分配内存来存储字符串。

char * file_content;
file_content = malloc(fsize);
于 2013-09-09T15:40:36.257 回答
2

“..但我得到一个段错误”

显然是因为您正在尝试写入未初始化的file_content

file_content使用前分配的内存

char * file_content =malloc(fsize);
于 2013-09-09T15:41:08.857 回答