【问题标题】:Segmentation Fault Core Dump Error分段故障核心转储错误
【发布时间】:2016-04-16 06:22:34
【问题描述】:

这是我的 C 程序,我正在使用 g++ 编译器。 编译后,当我运行代码时,它给出了一个分段错误(核心转储)错误:

#include <stdio.h>
#include <stdlib.h>

int main(){

  FILE *fp;

  fopen("sample.txt", "w+");

  fprintf(fp, "%s %s %s %d", "We", "are", "in", 2016 );

  fclose(fp);

  return 0;
}

请指导。

【问题讨论】:

  • 您正在使用 fp 而不对其进行初始化。这是未定义行为的原因。使用fp = fopen("sample.txt", "w+");。
  • 请删除您的帖子。这不太可能对其他人有帮助。

标签: c file segmentation-fault g++ coredump


【解决方案1】:

刚刚发现: 只需将文件打开函数分配给我的文件描述符。

fp = fopen("sample.txt", "w+");

【讨论】:

    【解决方案2】:

    fprintf 打印到文件指针 fp 给定的文件。在这种情况下, fp 仅被声明并且从未赋值,因此为空。当 fprintf 使用空指针时,它会导致段错误。你应该已经完成​​ fp = fopen(...) 所以指针不为空。

    【讨论】:

    • “因此为空” - 它是不确定
    • 你完全正确。出于某种原因,我认为 fp 是全球性的
    猜你喜欢
    • 2016-09-09
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多