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



我使用的是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,"%dn",a+b);
    fclose(f);
    fclose(g);
    return 0;
}

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

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

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

您最好使用C++库中的std::fstream;但即便如此,您也需要检查文件流是否已打开以及输入是否已成功读取。

相关内容

  • 没有找到相关文章

最新更新