C语言scanf函数
函数名:scanf
功能:实现格式化输入
格式:scanf(“<格式化字符串>”,地址表)
scanf函数是通用终端格式化输入函数,它从标准设备键盘上读取信息,然后把信息输入任何有固有类型的数据的地址中
scanf常用格式化字符:%d(整型,十进制),%s(字符串型),%c(字符型),%f(浮点型,小数)
具体使用举例
#include<stdio.h>
int main()
{
int a,b,c;
printf(“alittle conut:\n”);
scanf("%d ,%d,%d",&a,&b,&c);
printf(“输出三个数字:%d % %d\n”,a,b,c);
printf(“alittle conu:\n”);
scanf(“a=%d ,b=%d,c=%d”,&a,&b,%c);
printf(“输出三个数字:%d %d%d”,a,b,c);
printf(“alittle conu:\n”);
scanf("%d %d%d",&a,&b,&c);
printf(“输出三个数字:%d % %d\n”,a,b,c);
return 0;
}
#include<stdio.h>
int main()
{
char a[11];
char b;
printf(“put achar:\n”);
scanf("%c",&b);
printf("%c\n",b);
printf(" put somechar:\n");
scanf("%s",&a);
printf("%s\n",a);
return 0;
}
运行结果:
注意事项one:
在键盘上打印的输入需要与“格式化字符串”使用相同的格式才有效,否则会出错
注意事项two:
**我们在运行这个程序会发现在第二个scanf函数自动跳过,不等待输入就自己执行了,这是为什么呢?
原因:当scanf函数控制符是字符c的时候,我们在程序前一行连续输入两个整数的时候打的回车或者是空格都会被下一轮的scanf(“%c”,xx)吸收导致我们无法在输入下一个字符
更详细一点说呢就是
函数scanf( )从标准输入设备(键盘) 读取输入的信息,不会直接赋值给变量,而是先储存到一个缓冲区中
当程序执行到函数scanf()时,程序会从缓冲区中读取;
如果缓冲区是空的,才会停滞,光标闪烁,等待键盘的输入.
**
解决方法
1,在scanf(“%c”,c)的上一行添加一个getchar()函数来读取掉多余的字符,使得下一个scanf函数能正常运行
2,在scanf(“%c”,c)后面重复打印一个scanf(“%c”,c)再次读取输入的字符