• ベストアンサー

構造体のファイル出力

以下のような構造体を、テキストファイルに保存するにはどうしたらよいでしょうか? 構造体には、4つのデータがある場合、以下のようにします。 [構造体] typedef struct comp_bango { char bango[3]; } COMP; 出力テキスト 100 200 300 400

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

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

★構造体『bango[3]』に数字が3つ入っていると仮定して回答します。 ・つまり、  bango[0] = '1';  bango[1] = '0';  bango[2] = '0';  で『100』という数値が入っているとする。 ・上記の場合ならば、『fputc』関数で『bango[0]』~『bango[2]』の3つを  出力すれば良いと思います。 ・下のサンプルを参照して下さい。 サンプル: COMP CompData[ 4 ] = {  { '1', '0', '0' },  { '2', '0', '0' },  { '3', '0', '0' },  { '4', '0', '0' }, }; int n, i; FILE *fp; if ( (fp = fopen("filename.txt","w")) != NULL ){  for ( n = 0 ; n < 4 ; n++ ){ ←4つのデータだから   for ( i = 0 ; i < 3 ; i++ ){ ←『bango[0]』~『bango[2]』の3つ    fputc( CompData[n].bango[i], fp );   }   fputc( 0x20, fp ); ←間に空白文字を入れて出力  }  fclose( fp ); } 最後に: ・構造体メンバ『bango』には数字文字が3つ入るのですよね。 ・1つのデータに文字列の終端を示す'\0'は納めたいのならば、構造体のメンバに  『bango[4]』にすべきだと思いますが…。 ・以上。おわり。

yano-kouichi
質問者

補足

できました。 ありがとうございました。

その他の回答 (3)

  • yukimican
  • ベストアンサー率70% (112/159)
回答No.3

C言語で、その例の通りにテキスト出力したいなら、  1. fopenでファイルを開く  2. fprintfで各構造体のメンバをファイル出力  3. fcloseでファイルを閉じる でいけます。 まずは、printfでコンソール上に同じように表示できるようにしてから fprintfを使う方法に移していくとやりやすいかもしれません。 その他、関数の使い方は参考URLや他のマニュアルを見てください。 でも、読み込む時のことを考えると、スペース区切りはあまり良くありませんね。 構造体のメンバがbangoだけで、空白文字が絶対入らないなら大丈夫ですが。

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

補足

参考になりました。 ありがとうございます。

回答No.2

struct comp_bango はひとつのデータを表すものですよね? char bango[3]; だと文字列の終端を示す'\0'を納めることができませんが、それでいいですか?

yano-kouichi
質問者

補足

ひとつのデータになります。 文字列の終端を示す'\0'は納めたいです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「構造体には、4つのデータがある場合」と書かれていますが, この「4つのデータ」とは何を指すのでしょうか? もっと具体的に, 「どのようなデータがどのように入っているとき」に「どのような出力を期待しているのか」を書いてください.

yano-kouichi
質問者

補足

4つのデータは、出力テキストにある、100 200 300 400になります。 構造体には、3桁の数字になっており、その数字をファイルに出力します。

専門家に質問してみよう