c - 读取文件时出现段错误

标签 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;
}

最佳答案

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

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

关于c - 读取文件时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18701924/

相关文章:

C++函数重载导致段错误

c - strcmp 的段错误

c++ - Windows套接字编程中主机名的IP地址

macos - 无法在 OSX 10.8 (Mountain Lion) 上使用颠覆

Swift WKWebView 连续拼写检查

mysql - 在 Mac OSX 上安装 MySQL libmysqlclient-dev 和 UDF 文件

c - 前序树遍历有效但后序无效

c - 获取ARP数据包的大小

c - 如何在 Windbg 中打印 C 结构的数据

c - 避免私有(private)函数的原型(prototype)声明(在使用前定义)是否违反 MISRA?