先看下面这段程序
#include <stdio.h>
int main()
{
int a;
char b[100];
printf("Please input the number:\n",a);
scanf("%d",&a);
printf("a = %d",a);
printf("Please input the string:\n",b);
scanf("%s",&b);
printf("b = %s\n",b);
return 0;
}
简单的输入一个整数、字符,输出一个整数、字符串 函数,我们想要的是在输入输出一个整数之后,程序能够继续运行,但是结果我们发现,程序停了下来 无法输入字符串。
这是因为 用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。
为了避免这种情况,可多设几个字符数组分段存放含空格的串。
解决类似的这种问题我在网上和书里找了两个方法:
1、可以在两个scanf()函数之后加个fflush(stdin),或者加getch()、getchar();
printf("Please input the number:\n",a);
scanf("%d",&a);
getchar();
printf("Please input the string:\n",b);
scanf("%s",&b);
2、scanf()函数里有一个“%[]”格式控制符,其含义是,从方括号指定的集合中读取字符。读取不在集合中的字符,就结束输入。
%[]格式控制符提供了很大的灵活性。