2011-08-14 9 views
1

scanfスペースで\ nは文字i/pの区切り文字です。 以下のプログラムは、2つの入力のみを受け入れます。 なぜ2つの入力を受け入れるのか理解できませんでした。この動作について説明してください。c内のscanf()関数

 char a,b,c; 
    scanf("%c%c%c",&a,&b,&c); 
    printf("%c%c%c",a,b,c); 
    return 0; 
+0

"2つの入力を受け入れる"というわけではなく、3つの連続した 'char'を受け入れます。 – Mat

答えて

1

スペースまたはキャリッジリターンで区切らずに文字 '123'を入力すると、 が返され、aは '1'、bは '2'、cは '3'に設定されます。文字をスペース( '1 2 3')で区切った場合、 はaが1、bが ''、cが '3'に設定されます。 空白は入力文字としても扱われます。

+0

:私にはっきりと説明してくれてありがとう。 – Angus

5

あなたが入力した文字の間にスペースを入れていない場合はは3つの入力を受け付けません。

入力間のスペースを許可する場合は、scanf("%c %c %c",&a,&b,&c);を使用します。

+1

Oooooohhhhhh、そのOPが望んでいたもの! :-) –

+0

scanf( "%c%c%c"、&a、&b、&c)をスペースなしで入力すると2つの入力を受け取り、scanf( "%c%c%c"、&a、&b 、&​​c)スペースで。 – Angus

+0

@Beata:最初の文字は3つの連続する文字を読み込みます(空白も読み取ります)。 2番目の文字は3つの空白以外の文字を読みます(したがって、 "123"、 "1 2 3"とそれらの間にスペースがあります) –

関連する問題