scanf成为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量中
scanf(“格式控制符”,地址表列)
地址是由地址运算符“&”后跟变量名组成的
例如:&a,&b
分别表示变量a和变量b的地址
这个地址就是编译系统在内存中给ab变量分配的地址,在C语言中,使用了这个地址概念,这是与其它语言不同的,应该把变量的值和变量的地址,这两个不同的概念区别开来。变量的地址是c编译系统分配的,用户不必关心具体的地址是多少
#include<stdio.h> void main() { ? ?int a,b,c; ? ?printf("input a,b,c \n"); ? ?scanf("%d%d%d",&a,&b,&c);//空格和回车都可以区分这三个数的地址 ? ?printf("a=%d,b=%d,c=%d\n",a,b,c); }
表示该输入项,读之后不赋予相应变量,跳过该输入值
例如:scanf(”%d%*d%d“,&a,&b)
当输入1 2 3时,就会把1赋予a,2被跳过,3赋予b
1在scanf函数中没有精度,如:scanf(”%5.2f“,&a)是非法的
2scanf函数要求给出变量的地址
3在输入多个数值数据是,若格式控制串中没有非格式字符作为输入数据之间的间隔则可用空格,tab键回车做间隔
tab,回车或非法数据(如对”%d“)输入12A时,A就是非法数据,认为该数据结束
4如果格式控制符中有非格式符,输入时也要去输入上
#include<stdio.h> void main() { ? ?char a,b,c; ? ?printf("input three zimu:"); ? ?scanf("%c %c %c",&a,&b,&c); ? ?printf("%d %d %d \n%c %c %c\n",a,b,c,a-32,b-32,c-32); }
#include<stdio.h> void main() { ? ?int a; ? ?long b; ? ?float f; ? ?double d; ? ?char c; ? ?printf("int:%d\nlong:%d\nfloat:%d\ndouble:%d\nchar:%d\n",sizeof(a),sizeof(b),sizeof(f),sizeof(d),sizeof(c)); }