scanf()函数结构
scanf()函数被用来从stdin读入数据,并且在程序中储存数据。默认,这个stdin流是来着键盘输入。
scanf()的函数结构与printf()类似:
int i;
scanf("%d",&i);
%d 是一个占位符,说明这个地方有一个变量,并且为整型变量
& 是个地址符,表明这个地方放置地址,&i的意思就是 i这个变量的地址
int i;
float j;
scanf("%d%f", &i, &j);
当输入两个以上的变量的时候,使用空格来分隔这两个变量
需要注意的是对变量的定义要和输入时的类型保持一致:
#include <stdio.h>
int main(void)
{
int i;
printf("please input a number: ");
scanf("%f",&i);
printf("You inputed number is %f\n",i);
}
此时得到的结果会是一个意想不到的值
另外,不要使用float值作为输入类型,请一律使用double,然后在占位符的地方设置为%lf,这样才可以得到正确的结果。
#include <stdio.h>
int main(void)
{
double i;
printf("please input a number: ");
scanf("%lf",&i);
printf("You inputed number is %lf\n",i);
}
scanf()字符串输入:
char str[100];
scanf("%s", str);
scanf会接收100字符内的所有输入,直到出现空格空格,例如Hello World,实际上只是输入了Hello.
scanf还有更灵活的应用,scanf("%[etp]",str),此时scanf只接受e\t\p三个字符,只要不存在这三个字符,立即就完成输入
please input a string : eetttsdfasfd
You inputed string is eettt
please input a string : tpaejk
You inputed string is tp
scanf("%[^etp]",str) 则与前面的相反,只要遇到e\t\p就会终止
#include <stdio.h>
int main(void)
{
int a, b;
scanf("%dm%d", &a, &b);
printf("%d %d\n", a, b);
return 0;
}
请注意在%d %d之间有一个m,所以在输入的时候,我们也必须输入一个m作为间隔
当我们想输入日期的时候,我们就可以使用%d/%d/%d
返回值
scanf()正常的返回值是1,因此当返回值不为1时,说明函数未被正确执行