我使用的是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
的调用没有成功,可能是因为您的程序不是从包含文件的同一目录中运行的。在这种情况下,指针f
和g
将为null,在将它们传递给任何C库函数之前,必须检查这一点。
您还需要检查fscanf
是否成功,否则使用a
和b
将导致未定义的行为(尽管这很可能只会导致程序输出垃圾而不是崩溃)。
您最好使用C++库中的std::fstream
;但即便如此,您也需要检查文件流是否已打开以及输入是否已成功读取。