「みんな教えて! 選手権!!」開催のお知らせ

以下のような構造体を、テキストファイルに保存するにはどうしたらよいでしょうか?
構造体には、4つのデータがある場合、以下のようにします。

[構造体]
typedef struct comp_bango {
char bango[3];
} COMP;

出力テキスト
100 200 300 400

A 回答 (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]』にすべきだと思いますが…。
・以上。おわり。

この回答への補足

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

補足日時:2007/03/20 11:25
    • good
    • 0

C言語で、その例の通りにテキスト出力したいなら、


 1. fopenでファイルを開く
 2. fprintfで各構造体のメンバをファイル出力
 3. fcloseでファイルを閉じる
でいけます。

まずは、printfでコンソール上に同じように表示できるようにしてから
fprintfを使う方法に移していくとやりやすいかもしれません。
その他、関数の使い方は参考URLや他のマニュアルを見てください。

でも、読み込む時のことを考えると、スペース区切りはあまり良くありませんね。
構造体のメンバがbangoだけで、空白文字が絶対入らないなら大丈夫ですが。

参考URL:http://www9.plala.or.jp/sgwr-t/c/sec17.html

この回答への補足

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

補足日時:2007/03/20 11:27
    • good
    • 0

struct comp_bango はひとつのデータを表すものですよね?


char bango[3]; だと文字列の終端を示す'\0'を納めることができませんが、それでいいですか?

この回答への補足

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

補足日時:2007/02/28 16:17
    • good
    • 0

「構造体には、4つのデータがある場合」と書かれていますが, この「4つのデータ」とは何を指すのでしょうか? もっと具体的に, 「ど

のようなデータがどのように入っているとき」に「どのような出力を期待しているのか」を書いてください.

この回答への補足

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

補足日時:2007/02/28 15:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報