输入的宽度(即字符数)。
例如:
scanf("%5d",&a);
输入:12345678
只把 12345 赋予变量 a,其余部分被截去。
又如:
scanf("%4d%4d",&a,&b);
输入:12345678
将把 1234 赋予 a,而把 5678 赋予 b。
4) 长度:长度格式符为 l 和 h,l 表示输入长整型数据(如%ld) 和双精度浮点数(如%lf)。h
表示输入短整型数据。
使用 scanf 函数还必须注意以下几点:
1) scanf 函数中没有精度控制,如:scanf("%5.2f",&a);是非法的。不能企图用此语
句输入小数为 2 位的实数。
2) scanf 中要求给出变量地址,如给出变量名则会出错。如 scanf("%d",a);是非法
的,应改为 scnaf("%d",&a);才是合法的。
3) 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则
可用空格,TAB 或回车作间隔。C 编译在碰到空格,TAB,回车或非法数据(如对“%d”
输入“12A”时,A 即为非法数据)时即认为该数据结束。
4) 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有
效字符。
例如:
谭浩强 C 语言程序设计 2001 年 5 月 1 日
scanf("%c%c%c",&a,&b,&c);
输入为:
d e f
则把'd'赋予 a, ' ' 赋予 b,'e'赋予 c。
只有当输入为:
def
时,才能把'd'赋于 a,'e'赋予 b,'f'赋予 c。
如果在格式控制中加入空格作为间隔,
如:
scanf ("%c %c %c",&a,&b,&c);
则输入时各数据之间可加空格。
【例 4.8】
main(){
char a,b;
printf("input character a,b\n");
scanf("%c%c",&a,&b);
printf("%c%c\n",a,b);
}
由于 scanf 函数"%c%c"中没有空格,输入 M N,结果输出只有 M。而输入改为 MN 时则
可输出 MN 两字符。
【例 4.9】
main(){
char a,b;
printf("input character a,b\n");
scanf("%c %c",&a,&b);
printf("\n%c%c\n",a,b);
}
本例表示 scanf 格式控制串"%c %c"之间有空格时,输入的数据之间可以有空格间隔。
5) 如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
例如:
scanf("%d,%d,%d"