如果我的程序看起来像这样:
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种水果是什么: (不等待输入)
我该怎么做才能解决这个问题?
答案 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);