- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語)
C言語で3人分の情報を入力して表示するプログラムの実行回数が4回になる問題の原因は?
このQ&Aのポイント
- C言語で作成した3人分の情報を入力して表示するプログラムの実行回数が、なぜか4回になってしまう問題が発生しています。
- プログラム内のforループは正しく動作しており、3つの出力がされていることが確認されていますが、なぜ4回目の入力が発生してしまうのかが分かりません。
- プログラムをコンパイルしてもエラーは発生せず、問題を特定することができませんでした。原因が分かる方にアドバイスをいただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
scanf("%s %d %s",(ai+i)->name,&(ai+i)->age,(ai+i)->sex); にしてください。ただ、scanfは使い方が非常に難しい関数なのでベテランの自覚が無い限り使わない方が良いです。 また、返値(何個の値が入力されたか)のチェックは必須です。 あと、この場合だと、 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 10 bbbbbbbbbbbbbbbbbbbbbbbbbb のようなnameやsexのサイズを超える文字列入力があった場合、どうなるかわかりますか?%sには長さ指定が必須です。でも、単純に %19s じゃだめ。難しいでしょ? http://ja.wikipedia.org/wiki/Scanf#scanf.E3.81.AE.E5.95.8F.E9.A1.8C.E7.82.B9.E3.81.A8.E5.9B.9E.E9.81.BF.E6.96.B9.E6.B3.95 普通には、fgets関数で1行入力して、何らかの関数で区切って値をとります。
お礼
\n を抜くと、確かに3回ループになってくれました。 原因がよく分かりませんが勉強になりました。 ご回答ありがとうございました。