こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

getsの部分がとばされてしまう

#include<stdio.h>

typedef struct Car{
char name[20];
int num;
double gas;
}Car;

int main(void)
{
Car car[3];
int i;


for(i=0;i<3;i++){
printf("ナンバーを入力してください。\n");
scanf("%d",&car[i].num);
printf("車の名前を入力してください。\n");
gets(car[i].name);
printf("ガソリン量を入力してください。\n");
scanf("%lf",&car[i].gas);
}

printf("name\tnumber\tfuel\n");

for(i=0;i<3;i++){
printf("%s\t%d\t%f\n",car[i].name,car[i].num,car[i].gas);
}
return 0;
}


…上記のようなプログラムを書いたのですが、実行すると、gets(car[i].name);の部分の処理が飛ばされてしまい、入力することができません。
どのようにしたらよいか、教えていただけませんでしょうか。
よろしくお願いいたします。

投稿日時 - 2005-03-19 00:26:03

QNo.1277881

すぐに回答ほしいです

質問者が選んだベストアンサー

#1で指摘されている通りですけど、
scanf("%d\n",&car[i].num);
とすることで、scanfに\nを消費させることが一応できます。
私としては、やはり、scanfはやめて
fgetsを使って文字入力して
sscanfを使う方が良いと思います

投稿日時 - 2005-03-19 02:52:02

お礼

ありがとうございます。
scanfの部分をfgetsとsscanfに書き換えたところ、解決することができました。
理由はわかったものの、どのように直したらよいのかよくわからなかったので、助かりました。

投稿日時 - 2005-03-19 23:07:11

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

http://www.kouno.jp/home/c_faq/c12.html の12.18がそれだと思います。

参考URL:http://www.kouno.jp/home/c_faq/c12.html

投稿日時 - 2005-03-19 00:42:56

お礼

ありがとうございました。
何が原因なのかわからず困っていたので、教えていただいたページに描いてあったこと、大変参考になり、助かりました。

投稿日時 - 2005-03-19 23:04:11

あなたにオススメの質問