C语言中,scanf语句用于扫描键盘输入的数据,存储到变量的地址中。
有两种用法:
输出参数由若干个地址组成,可以是变量的地址,或字符串的首地址。
例一:
#include
int main()
{
int data;
printf("请输入一个整数:/n");
scanf("%d",&data);//注意后面这里的变量“data”前一定要加取地址符&
printf("你输入的整数是:%d\n",data);
return 0;
}
上面的代码编译运行后可以识别输入了一个什么数,并打印在屏幕上。
在上述代码中,如果scanf语句换成scanf("data=%d",&data);
,那么在输入数据的时候就要按照双引号里面的格式先输入data=
,后面接着敲要输入的数据。
例二:(输入多个数据)
#include
int main(void)
{
int data1,data2,data3;
printf("请输入三个整数:\n");
scanf("%d%d%d",&data1,&data2,&data3);
printf("你输入的三个数是:%d,%d,%d",data1,data2,data3);
return 0;
}
按照上述代码运行,输入数据的时候可以输入一个数据后按空格,紧接着输入下一个数据,输入完最后一个数据后直接按回车。也可以输入一个数据按一次空格。
如果上述代码的scanf语句换成这样:scanf("%d,%d,%d",&data1,&data2,&data3);
(在%d
之间加了逗号),风险可能会很大。因为如果只输入一个数据后不小心按了回车,那程序记录一个数据就直接结束了。后面两个数据是系统默认给你的两个数。
如果例二代码中的scanf语句换成这样:scanf("%d %d %d",&data1,&data2,&data3);
(在%d
之间加了空格),也会有风险,风险和上面一样。此时,正确输入有两种:
对像scanf("a=%f,b=%f,c=%f",&a,&b,&c);
这种格式的,编译运行程序后,输入的内容一定要按照双引号里面的内容敲:a=(要输入的值),b=(要输入的值),c=(要输入的值)
,才能正确输入。
因此,写scanf的时候千万不要在双引号里面乱加东西,而且建议有多少个数据就写多少个scanf语句。
#include
int main(void)
{
char data1;
char data2;
char data3;
printf("请输入三个字符\n");
scanf("%c%C%C",&data1,&data2,&data3);
printf("你输入的三个字符是:data1=%c,data2=%c,data3=%c\n",data1,data2,data3);
return 0;
}
上述代码可以扫描输入的字符,但是输入的时候不能用空格分割,也不能输入一个按一次回车,因为空格和回车都算是字符类型,因此只能连着输入三个字符。
#include
int main(void)
{
int data1;
float data2;
char data3;
printf("请按顺序输入一个整数,小数和字符:\n");
scanf("%d%f%c",&data1,&data2,&data3);
printf("你输入的整数,小数和字符是:整数:%d,小数:%f,字符:%c\n",data1,data2,data3);
}
上述代码编译运行后,输入整数和输入小数之间可以用空格或者回车相隔,但是输入小数和输入字符之间不能用空格和回车
如果输入整数和输入小数之间也连着,电脑会认为小数是以0.xxxx开头的数字
\n
。