- ベストアンサー
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
- みんなの回答 (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』もどうぞ。 ・以上。
その他の回答 (1)
- TA-HT81S
- ベストアンサー率39% (72/184)
入力用ファイルと出力用ファイルをオープンします。 while文でEOFまで入力ファイルを読み込むようにし、 そのカッコ内で、 バッファに1行取り込み、スペース区切りで3つの数字を取り出す。 3つの数字の和を計算。 出力用ファイルに書き出す。 カッコの外で、入力用ファイルと出力用ファイルをクローズします。 を書けばよいと思います。 後はがんばってコーディングしてください。
お礼
ありがとうございます。大体の方針は理解できたので頑張ってみます。
お礼
昨日から少しずつ考えていたのですが、このヒントのおかげでできそうな気がしてきました。本当にありがとうございました。
補足
無事に最後まで完成させることができました。これからも様々な応用ができることを勉強できたように思います。