-3

ubuntu12.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 を使用したプログラムはうまく機能すると言わざるを得ません。

4

1 に答える 1

2

最も可能性の高い問題はfopen、おそらくファイルを含む同じディレクトリからプログラムが実行されていないために、 への呼び出しが成功しないことです。その場合、ポインターfとポインターgは null になるため、それらを C ライブラリ関数に渡す前に確認する必要があります。

fscanfまた、成功したかどうかも確認する必要があります。それ以外の場合はaand を使用するとb、未定義の動作が発生します (ただし、プログラムがクラッシュするのではなく、ゴミを出力する可能性が高くなります)。

std::fstreamC++ ライブラリから使用する方がよい場合があります。ただし、その場合でも、ファイル ストリームが開かれて入力が正常に読み取られたかどうかを確認する必要があります。

于 2012-09-10T15:41:01.107 に答える