構造体とfgets()

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
TtTt

構造体とfgets()

#1

投稿記事 by TtTt » 14年前

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度に取り込 み、最初の空白までを名前とみなし、次の空白までを身長とみなし、次に改行ま でを血液型をみなせばよい。これらを別々の文字列として、必要に応じて整数や 浮動小数点数に変換し、構造体のメンバに設定すること。

ヒント: ひとつの構造体の各メンバの値を表示する関数に構造体を引渡す ことを繰り返えせばよい。

これの入力のところがさっぱりわからないのですが誰かおしえてもらえますか?

アバター
さかまき
記事: 92
登録日時: 14年前

Re: 構造体とfgets()

#2

投稿記事 by さかまき » 14年前

ヒントはただのヒントなのでしょうか?
それとも仕様なのでしょうか?

最初の空白までを名前とみなし、次の空白までを身長とみなし、次に改行ま でを血液型をみなし、
これらを別々の文字列として、必要に応じて整数や 浮動小数点数に変換し、構造体のメンバに設定
しなければならないのでしょうか?
fgets で1行でよみこんだ文字列を1度に指定した変数にセットする関数がありますが、使っちゃだめですか?

non
記事: 1097
登録日時: 14年前

Re: 構造体とfgets()

#3

投稿記事 by non » 14年前

まるなげ不可。
まず、できるところまで作って添付してください。
最低でも、構造体の定義ぐらいは書けるでしょ。
non

TtTt

Re: 構造体とfgets()

#4

投稿記事 by TtTt » 14年前

さかまきさん>>そんな関数あるんですか?特に指定がないのでOKです。

non>>すいません。やってみたのですが、変にちょっとだけ書いておくのも迷惑かと思い載せてないです。

アバター
さかまき
記事: 92
登録日時: 14年前

Re: 構造体とfgets()

#5

投稿記事 by さかまき » 14年前

ヒントの
>これらを別々の文字列として、必要に応じて整数や 浮動小数点数に変換し、・・・
の書き方は、
「特に指定がないのでOKです。」とは読めないのですが本当にOKですか?

だとすれば、fgets で読み込んだ1行文字列に対して
sscanf を使えば、直接、指定した変数にセット可能です。

>変にちょっとだけ書いておくのも迷惑かと思い
迷惑じゃないと思う。丸投げだと思われない為にも載せたほうがよいと思う。

初級者
記事: 200
登録日時: 14年前

Re: 構造体とfgets()

#6

投稿記事 by 初級者 » 14年前

大学の名前や所在地の部分は伏せ字にした方が
よかったんではないでしょうか。

まあ、よけいなお世話ですけどね。

アバター
さかまき
記事: 92
登録日時: 14年前

Re: 構造体とfgets()

#7

投稿記事 by さかまき » 14年前

立命太郎、野路花子、衣笠一郎 さん三人は
有名人ですね。検索していたら、同じ課題の相談が
この掲示板にもあったようです。これで解決?

閉鎖

“C言語何でも質問掲示板” へ戻る