- ベストアンサー
C言語の構造体のファイルへの書き込みについて
- C言語を勉強しているものです。構造体を指定した番号の場所にファイルへ書き出し、その指定した番号の場所の構造体をファイルから読み込み表示というプログラムを作成したいのですが、うまくいかずどうしたらいいのかわかりません。
- 説明不足ですがご教授お願いします。ソフトはVisual C++ 2008 Express Editionを使ってます。
- 構造体のファイルへの書き込みと読み込みがうまくできない問題で困っています。ご教授お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>うまくいかず 何がどのようにうまくいかないか、具体的に書いてください。 以下は、私がザッとソースをながめたときに気づいた点です。 1) main()の型はintです。 2) 入力時、何の入力を求めているかがわかりません。 printf()か何かを使ってプロンプトを出力する方がよいでしょう。 3) >float Weight;/*体重*/ >scanf("%d",&tag.Weight);/*体重*/ float型の変数に対する書式文字列が"%d"というのは、まずいです。 4) >printf("%d\n",&tag.Sex); >printf("%d\n",&tag.Height); >printf("%d\n",&tag.Weight); アドレスを出力したいのですか?
その他の回答 (1)
- phoenix343
- ベストアンサー率15% (296/1946)
ひんと。 ・C言語では配列の添え字はいくつから始まるんだっけ? ・fseekの戻り値を調べたら? 直したほうがよいと思われるもの ・C言語でintはサイズが決まっていない型なので、char、short、longのいずれかにすべきである。 ・tag.Nameは固定文字列のようだが入力のscanfでは、長さのチェックがされていないので危険
お礼
回答ありがとうございます。 >C言語では配列の添え字はいくつから始まるんだっけ? ・0からですよね?どこに反映させれば??fseekの(pos)部分を(pos-1)の形に直せばいいのでしょうか? >fseekの戻り値を調べたら? ・戻り値はどちらも0だったので正常だとおもいます。 ・fwrite,freadについても1が返されました。 >C言語でintはサイズが決まっていない型なので、char、short、longのいずれかにすべきである。 ・問題がintで指定されています>< >tag.Nameは固定文字列のようだが入力のscanfでは、長さのチェックがされていないので危険 ・長さのチェックなどのエラー処理は、省かせていただきました。
補足
実行結果としては↓のように表示されます。 1 TaroYamada 0 150 50 0 1 TaroYamada 1244928 1244932 1244936 0
お礼
回答ありがとうございます。 3)と4)が問題だったようです。