2011-09-15 21 views
0

私は自分のプログラムのエラーをゆっくりと追跡しています。私はこれに絞った。 私が正しく値を読み、ユーザの入力fscanf改行文字を読む

fscanf(stdin, "%c %c %d", &car, &dir, &amount);

にそれが正常に動作し、私はそれを初めてアクセスを持っています。 2回目のループでは、私はそれを与える文字の代わりに\nを車に読み込みます。車に乗っていたはずのものをdirに読み込みます。金額が正しく読み込まれます。車がカウントするために他の関数に渡されると、私は結局segfaultで終わる。

前の行などから読み込んでいますか?

+0

はい、それはそれをやっているように見える以内にそれを解析します。 –

答えて

1

"%c"変換指定子は通常の空白トリミングを行いません。最初の変換指定

if (fscanf(stdin, " %c %c %d", &var, &dir, &amount) != 3) { /* error */ } 

または、多分よりよいの前にスペースを追加する
てみ、フルラインを読んで、あなたのプログラム

char buf[1000]; 
fgets(buf, sizeof buf, stdin); 
parse(buf); 
関連する問題