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

C++ 在C+中使用文件时出现分段错误+;,c++,c,segmentation-fault,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,"

我正在使用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;
}
#包括
文件*f=fopen(“test.in”,“r”);
文件*g=fopen(“test.out”,“w”);
int main(){
INTA,b;
fscanf(f、%d%d、&a和&b);
fprintf(g,“%d\n”,a+b);
fclose(f);
fclose(g);
返回0;
}

我不得不说,使用stdin/stdout的程序运行得很好。

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

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


你最好从C++库中使用<代码> STD:FStuts;但即使这样,您也需要检查文件流是否已打开,输入是否已成功读取。

您需要使用调试器,查看它在哪里出错以及原因。例如,如果fopen失败,f或g可能为null。1)使用调试器。2)检查错误。你的代码没有测试错误条件,并高兴地刚刚通过他们。为什么不打开F和G在main?为什么这个标记的C++?代码是C。