教授から渡された C コードの一部を理解するのに少し苦労しています。コードは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char name[1000];
printf( "What's your name? " );
scanf( "%s", name );
printf( "name is %s\n", name );
scanf( "%[^\n]", name ); /* read the entire line (up to but not
including the '\n' at then end) */
getchar(); /* consume the newline from the input */
printf( "name is %s\n", name );
return EXIT_SUCCESS;
}
ユーザーは名前を入力し、次のように 2 回出力します。
What's your name? Dan
name is Dan
name is Dan
これがどのように機能するかは私を混乱させます。プロンプトは printf で出力され、入力は scanf でバッファに読み込まれ、バッファは printf で出力されます。ただし、2 番目の printf の \n はバッファをクリアする必要があるため、2 番目の scanf の読み取りはどこから行われるのでしょうか? ユーザー入力を待つと思いますが(空のバッファーがあれば)、そうではなく、単に名前を知っているだけです。これはどのように作動しますか?