第二书包网

收藏备用网址www.dier22.com不迷路
繁体版 简体版
第二书包网 > c语言设计第三版 > 7 8 9

7 8 9

2. 格式字符串

格式字符串的一般形式为:

%[*][输入数据宽度][长度]类型

其中有方括号[]的项为任选项。各项的意义如下:

1) 类型:表示输入数据的类型,其格式符和意义如下表所示。

格式

f 或 e

字符意义

输入十进制整数

输入八进制整数

输入十六进制整数

输入无符号十进制整数

输入实型数(用小数形式或指数形式)

输入单个字符

输入字符串

2) “*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。

如:

scanf("%d %*d %d",&a,&b);

当输入为:1 2 3 时,把 1 赋予 a,2 被跳过,3 赋予 b。

3) 宽度:用十进制整数指定输入的宽度(即字符数)。

例如:

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",&a,&b,&c);

其中用非格式符“ , ”作间隔符,故输入时应为:

5,6,7

又如:

一秒记住www点dier22点com,最新小说等你来
『加入书签,方便阅读』