在请求带空格的字符串时循环扫描

时间:2015-09-29 03:58:16

标签: c scanf

#include <stdio.h>

int main()
{
   char name[100];
   int i;
   for (i=0; i<3;i++){
      printf("\nEnter the name : ");

      scanf("%[^\n]",name);
   }
   printf ("\nName of Student : %s ",name);
}

我希望这段代码要求提供3次名称,但是只有这样做一次,感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

#include <stdio.h>

int main()
{
   char name[100];
   int i;
   for (i=0; i<3;i++){
      printf("\nEnter the name : ");

      scanf ("%[^\n]%*c", name);
  }
  printf ("\nName of Student : %s ",name);
}

[]是扫描集字符。 [^ \ n]告诉我输入不是新行(&#39; \ n&#39;)。然后使用%* c,它从输入缓冲区中读取换行符。

你也可以使用:

scanf(" %[^\n]s",name);

答案 1 :(得分:0)

使用时:

scanf("%[^\n]",name);

换行符留在输入流中。当第二次和第三次调用该函数时,scanf将零个字符读入接收参数。

添加一行以阅读并丢弃该行后面的换行符。

getc();