在C ++中使用文件时出现分段错误

时间:2012-09-10 15:27:48

标签: c++ c segmentation-fault

我正在使用ubuntu 12.04。我一直在为简单的C ++学校项目尝试一些IDE。 然而,使用codelite,anjuta和kdevelop我遇到了一个问题:当我尝试读/写文件时,我得到分段错误:核心转储。

我使用的是基本来源:

#include<stdio.h>

FILE*f=fopen("test.in","r");
FILE*g=fopen("test.out","w");

int main () {

    int a,b;
    fscanf(f,"%d %d",&a,&b);
    fprintf(g,"%d\n",a+b);

    fclose(f);
    fclose(g);

    return 0;
}

我不得不说stdin / stdout程序运行良好。

1 个答案:

答案 0 :(得分:2)

最可能的问题是对fopen的调用没有成功,可能是因为您的程序没有从包含文件的同一目录运行。在这种情况下,指针fg将为null,您必须在将它们传递给任何C库函数之前检查它。

您还需要检查fscanf是否成功,否则使用ab将导致未定义的行为(尽管这很可能只是导致程序输出垃圾而不是崩溃)。

最好使用C ++库中的std::fstream;但即使这样,您还需要检查文件流是否已打开并且输入是否已成功读取。