以下のコードをコーディングしましたが、問題がありました
char p[20];
int n;
errno = 0;
n = scanf("%[^\n]",p);
if (1 == n)
{
printf("%s\n",p);
scanf("%[^\n]",p); /*no waiting for input*/
printf("%s\n",p);
}
以下のコードをコーディングしましたが、問題がありました
char p[20];
int n;
errno = 0;
n = scanf("%[^\n]",p);
if (1 == n)
{
printf("%s\n",p);
scanf("%[^\n]",p); /*no waiting for input*/
printf("%s\n",p);
}
n = scanf("%[^\n]",p);
\nこれは、つまりENTERキーを除くすべての文字をスキャンすることを示しています。したがって、文字列を入力することができ、 を押したはずENTERです。このENTER文字はまだstdinバッファ内にあり、次のscanfステートメントを終了します
scanf("%[^\n]",p);/*no executed*/
したがって、それが実行されないように思われます。scanf、最初にバッファーから読み取り、そこに十分なデータが見つからない場合は、入力を待ちます。
ENTER最初に入力した を のような関数にフィードしますgetchar()。getchar()つまり、秒の前に a を追加するscanfと、秒scanfはからの入力を受け入れるようになりますstdin
何かのようなもの
if (1 == n)
{
printf("%s %d\n",p,n);
getchar();
scanf("%[^\n]",p);/*no executed*/
printf("%s\n",p);
}