C言語関係掲示板

過去ログ

No.364.scanf( )の改行文字について

[戻る] [ホームページ]


No.2402

scanf( )の改行文字について
投稿者---まっちゃん(2002/08/15 20:30:50)


 こんばんわ、初めて質問させて頂きます松井と申すものです。宜しくお願いします。
scanf()について質問に答えて頂きたいと思うのですが、キーボードから文字などを入力する際には、いったん入力バッファに格納されて、Enter キーを押すことで変数に格納されると、あるHPで書いてあったのですが、最初にscanf()において %d 変換で数値を入力させて、次にまた %d 変換で数値を入力するようにした場合、最初に入力した時に生じた”\n”は、2回目の入力でどのような扱いを受けているのでしょうか?宜しくお願いします。

No.2404

Re:scanf( )の改行文字について
投稿者---TDa(2002/08/16 09:37:02)


>最初にscanf()において %d 変換で数値を入力させて、次にまた %d 変換で数値
>を入力するようにした場合、最初に入力した時に生じた”\n”は、2回目の入力
>でどのような扱いを受けているのでしょうか?

こんにちは。
'\n'もホワイトスペースなので読み飛ばして変換しにいきます。
int main(void)
{
int x, y, z;

printf("input x y z\n");
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &z);
printf("x = %d, y = %d, z = %d\n", x, y, z);

return 0;
}

このコードでは
10 20 30[return]でも
10[return]
20[return]
30[return]
でも同じように動作します。


No.2405

Re:scanf( )の改行文字について
投稿者---まっちゃん(2002/08/16 13:05:28)


回答していただいてありがとうございました。
ところで、「ホワイトスペース」とは何でしょうか?
重ね重ね申し訳ありません。



No.2406

Re:scanf( )の改行文字について
投稿者---TDa(2002/08/16 14:00:33)


>ところで、「ホワイトスペース」とは何でしょうか?
空白文字のことです。空(スペース)白(ホワイト)というわけですね。
ctype.h isspace()で1が返るものですが具体的には
スペース' '、タブ'\t'、改行'\n'、復帰'\r'、垂直タブ'\v'、改ページ'\f'です。