質問: ### 前提・実現したいこと C言語で標準入力から 半角スペース区切りでデータを読み込みます。 たとえば、 1 10 A 11 です。 ### 発生している問題・エラーメッセージ 期待している出力は a=1 b=10 c=A d=0 ですが、実際には a=1 b=10 c= d=0 が表示されます。 ### 該当のソースコード ``` #include int main(void) { int a,b; char c; int d; scanf("%d %d",&a,&b); printf("a=%d b=%d\n",a,b); scanf("%c %d",&c,&d); printf("c=%c d=%d\n",c,d); return 0; } ```
回答: 変数cが、バッファに残った改行文字を読み込んでしまっています。 次のように書けば、食べ残しを防ぐことができます。 ``` scanf("%d %d%*c", &a, &b); ``` 参考: Wikipedia - scanf - 改行文字の取り扱い fgets + strtok + strtol を用いて書き直しても良いでしょう。