刚刚在用scanf(“%s”,str)时发现了当输入中含有空格的时候,输出的结果不是我们想要的结果,例如代码:
#include <stdio.h>
int main(void)
{
char str[20];
printf("请输入一串字符: ");
scanf("%s", str);
printf("这个字符串为: %s\n", str);
return 0;
}
当我们输入Hello World的时候,屏幕上只会输出Hello,当这样输入的时候,scanf扫描到o后面的空格时,就认为对str的赋值结束,并忽略了后面的World。注意:后面的World依然还在stdin缓冲区,用getchar()就可以验证。
那么,怎么才能解决这样的问题呢?
可以用gets()代替scanf(),代码如下:
#include <stdio.h>
int main(void)
{
char str[20];
printf("请输入一串字符: ");
gets(str);
printf("这个字符串为: %s\n", str);
return 0;
}
scanf函数更加详细的细节可以参考http://www.cnblogs.com/lovevivi/archive/2013/03/04/2942492.html