我已经编写了以下代码,但是出现了问题
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
ie ENTERkey 之外的每个字符。所以它允许你输入一个字符串,你会按下ENTER。此ENTER字符仍在stdin
缓冲区中,这将终止您的下一条scanf
语句
scanf("%[^\n]",p);/*no executed*/
因此在您看来,它可以执行!scanf
,首先从缓冲区读取,如果它没有找到足够的数据,然后等待您的输入。
将ENTER您首先输入的内容提供给某些功能,例如getchar()
. 即getchar()
在你的第二个之前添加一个scanf
,现在你的第二个scanf
将接受来自的输入stdin
就像是
if (1 == n)
{
printf("%s %d\n",p,n);
getchar();
scanf("%[^\n]",p);/*no executed*/
printf("%s\n",p);
}