name(名前: char型配列), height(身長: float型変数), bloodType(血液型: char型変数)をメンバに持つ構造体を宣言し, 128名分が記憶可能になるようその構造体の配列を定義せよ. また,その配列に対して値を入力し,さらに表示できるようにせよ. 構造体のメンバ値を表示するには、 ひとつの構造体の各メンバの値を表示する関数を作成すること。
% ./bodyData
1人目のデータ: 立命太郎 175.5 A
2人目のデータ: 野路花子 169.0 B
3人目のデータ: 衣笠一郎 180.4 O
4人目のデータ: 0 0 0 ← 0 0 0 と入力すると終わる.
名前 身長 血液型
立命太郎 175.5 A
野路花子 169.0 B
衣笠一郎 180.4 O
%
ヒント: 各人の名前、身長、血液型のデータを1行で入力するためには、参 考11.7に示されたfgets()関数で、これらを1度に取り込 み、最初の空白までを名前とみなし、次の空白までを身長とみなし、次に改行ま でを血液型をみなせばよい。これらを別々の文字列として、必要に応じて整数や 浮動小数点数に変換し、構造体のメンバに設定すること。
ヒント: ひとつの構造体の各メンバの値を表示する関数に構造体を引渡す ことを繰り返えせばよい。
これの入力のところがさっぱりわからないのですが誰かおしえてもらえますか?
構造体とfgets()
Re: 構造体とfgets()
ヒントはただのヒントなのでしょうか?
それとも仕様なのでしょうか?
最初の空白までを名前とみなし、次の空白までを身長とみなし、次に改行ま でを血液型をみなし、
これらを別々の文字列として、必要に応じて整数や 浮動小数点数に変換し、構造体のメンバに設定
しなければならないのでしょうか?
fgets で1行でよみこんだ文字列を1度に指定した変数にセットする関数がありますが、使っちゃだめですか?
それとも仕様なのでしょうか?
最初の空白までを名前とみなし、次の空白までを身長とみなし、次に改行ま でを血液型をみなし、
これらを別々の文字列として、必要に応じて整数や 浮動小数点数に変換し、構造体のメンバに設定
しなければならないのでしょうか?
fgets で1行でよみこんだ文字列を1度に指定した変数にセットする関数がありますが、使っちゃだめですか?
Re: 構造体とfgets()
さかまきさん>>そんな関数あるんですか?特に指定がないのでOKです。
non>>すいません。やってみたのですが、変にちょっとだけ書いておくのも迷惑かと思い載せてないです。
non>>すいません。やってみたのですが、変にちょっとだけ書いておくのも迷惑かと思い載せてないです。
Re: 構造体とfgets()
ヒントの
>これらを別々の文字列として、必要に応じて整数や 浮動小数点数に変換し、・・・
の書き方は、
「特に指定がないのでOKです。」とは読めないのですが本当にOKですか?
だとすれば、fgets で読み込んだ1行文字列に対して
sscanf を使えば、直接、指定した変数にセット可能です。
>変にちょっとだけ書いておくのも迷惑かと思い
迷惑じゃないと思う。丸投げだと思われない為にも載せたほうがよいと思う。
>これらを別々の文字列として、必要に応じて整数や 浮動小数点数に変換し、・・・
の書き方は、
「特に指定がないのでOKです。」とは読めないのですが本当にOKですか?
だとすれば、fgets で読み込んだ1行文字列に対して
sscanf を使えば、直接、指定した変数にセット可能です。
>変にちょっとだけ書いておくのも迷惑かと思い
迷惑じゃないと思う。丸投げだと思われない為にも載せたほうがよいと思う。
Re: 構造体とfgets()
大学の名前や所在地の部分は伏せ字にした方が
よかったんではないでしょうか。
まあ、よけいなお世話ですけどね。
よかったんではないでしょうか。
まあ、よけいなお世話ですけどね。
Re: 構造体とfgets()
立命太郎、野路花子、衣笠一郎 さん三人は
有名人ですね。検索していたら、同じ課題の相談が
この掲示板にもあったようです。これで解決?
有名人ですね。検索していたら、同じ課題の相談が
この掲示板にもあったようです。これで解決?