前提・実現したいこと
このコードが正しく機能するようにしたいです。
発生している問題・エラーメッセージ
forループを用いて三人分の入力をしたいのですが以下のように2ループ目からfgets関数がとばされてしまいます。空白をいれなくても同じ結果です。 Name? okada hanako Height? 140 Weight? 40 Name? Height?
該当のソースコード
ソースコード #include<stdio.h> #include<stdlib.h> #define NAME_LEN 1000 #define N 3 /* 構造体personの定義 */ struct person{ char name[NAME_LEN]; double height; double weight; }; int main() { /* (1) 変数宣言 */ struct person member[N]; /* (2) 処理内容 */ /* データ入力 */ int i; for(i=0;i<N;i++){ printf("Name? "); fgets(member[i].name, sizeof(member[i].name),stdin); //scanf("%s",member[i].name); printf("Height? "); scanf("%lf", &member[i].height); printf("Weight? "); scanf("%lf", &member[i].weight); //printf("Name: %s\n",member[i].name); } /*平均値の算出*/ double ave_h,ave_w,t_h=0,t_w=0; for(i=0;i<N;i++){ t_h+=member[i].height; t_w+=member[i].weight; } ave_h=t_h/N; ave_w=t_w/N; /* データ表示 */ printf("----------------------------\n"); for(i=0;i<N;i++){ printf("Name: %s\n",member[i].name); printf("Height: %.1f\n",member[i].height); printf("Weight: %.1f\n\n",member[i].weight); } printf("\nAverage\nHeight:%.1f\nWeight:%.1f\n",ave_h,ave_w); return 0; }
試したこと
fgets関数ではなくscanfで行うと上手くいきました。
補足情報(FW/ツールのバージョンなど)
Windows10、ubuntu
ここにより詳細な情報を記載してください。
どういうふうにうまく動作しないんでしょうか
そこらへんを詳しく説明しましょう
回答2件
あなたの回答
tips
プレビュー