• ベストアンサー

C言語におけるtxtファイルの読み込みと出力

環境:WinXP,Borland C++compiler 以下のようなプログラムを考えました。 ・sample.c #include <stdio.h> float func(float x,float y,float z); int main(void) { float x,y,z; scanf("%f",&x); scanf("%f",&y); scanf("%f",&z); printf("%f",func(x,y,z)); return 0; } float func(float x,float y,float z) { return x+y+z; }//ここまで。 例えば(x,y,z)=(1,2,3)と入力すると6が出力されます。 このプログラムを、任意のn組の(x,y,z)の記述されたテキストファイルを読み込んで出力outを計算し、別のテキストファイルにn組の(x,y,z,out)を書き込むようにするにはどのような変更を加えればよいのでしょうか。 具体例は以下のような感じです。用意しておいたinput.txtをsample.cで読み込んで計算し、また作成されていないoutput.txtに出力するのが目標です。 (n=3の場合) ・input.txt //x y z 1 2 3 1 8 9 -1 7 5 ・output.txt //x y z out 1 2 3 6 1 8 9 18 -1 7 5 11

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★アドバイス ・コメント付きの穴埋め問題風にサンプルを載せます。  『ここは自分で記述』という部分を記述すれば簡単に出来ると思います。 ・なお、ファイル内の1行目にあるコメントは考慮していません。つまり、  input.txt…『//x y z』  output.txt…『//x y z out』  の部分もちゃんと入出力処理するには少し工夫がいるのです。 ・この部分はご自分で考えて下さい。 サンプル: int main( void ) {  float x, y, z;  FILE fp; ←入力用  FILE fo; ←出力用    if ( (fp = fopen(ここは自分で記述)) != NULL ){ ←読み込み用でオープン   if ( (fo = fopen(ここは自分で記述)) != NULL ){ ←書き込み用でオープン    while ( fscanf(fp,"%f %f %f",&x,&y,&z) == 3 ){ ←一度に3つ読み込む     fprintf( fp, "ここも自分で記述", x, y, z, func(x,y,z) );     ↑     output.txt へ文字列を出力    }    fclose( fo );   }   fclose( fp );  }  return 0; } 最後に: ・下の『参考URL』もどうぞ。 ・以上。

参考URL:
http://www9.plala.or.jp/sgwr-t/c/sec17.html,http://www9.plala.or.jp/sgwr-t/c/sec05.html
Wikky
質問者

お礼

昨日から少しずつ考えていたのですが、このヒントのおかげでできそうな気がしてきました。本当にありがとうございました。

Wikky
質問者

補足

無事に最後まで完成させることができました。これからも様々な応用ができることを勉強できたように思います。

その他の回答 (1)

  • TA-HT81S
  • ベストアンサー率39% (72/184)
回答No.1

入力用ファイルと出力用ファイルをオープンします。 while文でEOFまで入力ファイルを読み込むようにし、 そのカッコ内で、 バッファに1行取り込み、スペース区切りで3つの数字を取り出す。 3つの数字の和を計算。 出力用ファイルに書き出す。 カッコの外で、入力用ファイルと出力用ファイルをクローズします。 を書けばよいと思います。 後はがんばってコーディングしてください。

Wikky
質問者

お礼

ありがとうございます。大体の方針は理解できたので頑張ってみます。

関連するQ&A