c言語のscanf関数がよくわかりません。
以下のコードで(1)は入力バッファに改行が残っているため、
変数aで改行を読み取ってしまっているのはわかります。
しかし(2)では入力バッファに改行が残っているのにも関わらず、
正常に入力できるのはなぜでしょう?読み飛ばされないまでも
b[0]に改行が入るような気がするのですが...
また、この出力ではないのですが(3)に関して、
%dでもバッファに改行があるの関わらず、それを
読み取らないのはどうしてでしょうか?
説明がわかりにくくてすいません。
回答よろしくお願いしますm(__)m
C
1#include <stdio.h> 2 3int main(){ 4 char x,a,b[10]; 5 int c; 6 7 //(1) 8 printf("x: "); scanf("%c",&x); 9 printf("a: "); scanf("%c",&a); 10 printf("\n"); 11 12 //(2) 13 printf("x: "); scanf("%c",&x); 14 printf("b: "); scanf("%s",b); 15 printf("\n"); 16 17 //(3) 18 printf("x: "); scanf("%c",&x); 19 printf("c: "); scanf("%d",&c); 20 printf("\n"); 21 22 printf("c: ",&x); scanf("%c",&x); 23 24 return 0; 25} 26 27//////////////出力///////////////// 28x: 1 29a: 30x: 2 31b: 3 32 33x: c: 4 34 35c:

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。