我的第二个Scanf()被跳过

时间:2016-03-28 18:19:23

标签: c

如果我的程序看起来像这样:

printf("What are your 2 favourite fruits:\n");
scanf("%s", s1);
printf("What are your 2 least favourite fruits:\n");
scanf("%s", s2);

我的第一个Scanf()中有一个空格,第二个Scanf()被跳过。

输出如下:

你最喜欢的2种水果是什么: 苹果和橘子

你最不喜欢的2种水果是什么: (不等待输入)

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:2)

带有scanf()

%s不接受包含空格的字符串。

对于具有空格的字符串,请使用fgets()scanf("%[^\n]s", string);
这将读取所有内容,直到换行符#\n'。

例如:

printf("What are your 2 favourite fruits:\n");
scanf("%[^\n]s", s1);
printf("What are your 2 least favourite fruits:\n");
scanf("%[^\n]s", s2);