我编写了以下代码,但出现了问题
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);
}
答案 0 :(得分:3)
n = scanf("%[^\n]",p);
这表示扫描除\n
之外的每个字符,即 ENTER 键。所以它允许你输入一个字符串,你可以按 ENTER 。此 ENTER 字符仍在stdin
缓冲区中,这将终止您的下一个scanf
语句
scanf("%[^\n]",p);/*no executed*/
因此似乎它执行了dint! 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);
}