一、问题
⼀个 scanf( ) 函数由格式控制和地址表列两部分组成,那么关于 scanfO函数的格式控制都包括什么?
二、解答
scanf( ) 函数的格式控制的⼀般格式为:
%[修饰符]类型
类型指的是格式字符,不同的数据类型⽤不同的格式字符,表⽰常见类型的种类如表所示。
格式类型 | 说明 |
d | 输⼊⼗进制整数 |
u | 输⼊⽆符号⼗进制整数 |
o | 输⼊⽆符号的⼋进制整数 |
x | 输⼊⽆符号的⼗六进制整数 |
f或e | 输⼊实型数 |
c | 输⼊单个字符 |
s | 输⼊字符串 |
scanf( ) 函数的格式说明字符串中的“⼜”中的修饰符也有很多种,常见的如表所示。
字符 | 说明 |
l | ⽤于输⼊长整型数据 |
h | ⽤于输⼊短整型数据 |
域宽 | ⽤⼗进制整数指定输⼊的宽度,即字符数 |
* | 表示在输⼊项读⼊后不赋予相应的变量,即跳过该项输⼊值 |
在了解了格式字符中的修饰符和类型两部分后,通过⼀个例⼦,对 scanf( ) 函数的格式说明进⼀步理解,相应代码如下。
main()
{
int a, b;
scanf("%3d%5d", &a, &b);
printf("a=%d\n", a);
printf("b=%d\n", b);
}
运⾏程序,输⼊12345678,显⽰结果如下所示。
12345678
a=123
b=45678
由于已经设定了域宽,因此⽆间断地输⼊12345678后,系统会⾃动将123赋给a,将剩下的五位赋给 b。
三、总结
上述例⼦只介绍了域宽的应⽤,其余修饰符和格式字符的应⽤与此例相同,只是不同的修饰符有不同的作⽤,不同的格式字符代表输⼊不同的数据类型数据⽽⼰。