1. 简介
scanf
函数是 C 语言中用于从标准输入(通常是键盘)读取格式化输入的重要函数。它能够读取不同类型的数据,如整型、浮点型、字符型等,并将读取的数据存储到指定的变量中。本文将全面解析 scanf
函数的用法与技巧。
2. 语法
scanf
函数的基本语法如下:
int scanf(const char *format, ...);
其中:
format
是一个指向格式化字符串的指针,包含普通字符和格式说明符。...
表示可变参数列表,根据格式说明符提供相应类型的变量地址。
3. 格式化字符串
格式化字符串包含普通字符和格式说明符,用于指定输入数据的类型和格式。
3.1 普通字符
普通字符直接匹配输入流中的字符。例如,在 scanf("%d %d", &a, &b);
中,第一个 %d
前的空格将忽略前导空白字符。
3.2 格式说明符
格式说明符以 %
开头,用于指定输入数据的类型和格式。以下是一些常用的格式说明符及其用途:
%d
或%i
:读取十进制整数。%u
:读取无符号十进制整数。%o
:读取八进制整数。%x
或%X
:读取十六进制整数(小写或大写)。%f
:读取浮点数。%e
或%E
:读取科学计数法表示的浮点数。%g
或%G
:自动选择%f
或%e
的格式,读取最短的有效表示。%c
:读取单个字符。%s
:读取字符串,遇到空白字符停止。%p
:读取指针地址。%%
:读取%
字符本身。
3.3 格式修饰符
格式修饰符可以进一步控制输入的格式,包括宽度、跳过字符等。
- 宽度修饰符:指定读取的最大字符数。例如,
%5d
表示最多读取 5 个字符。 - 星号:忽略一个数据。
4. 示例
以下是一些使用 scanf
函数的示例:
#include <stdio.h>
int main() {
int a;
float b;
char c;
char str[100];
printf("请输入一个整数:");
scanf("%d", &a);
printf("请输入一个浮点数:");
scanf("%f", &b);
printf("请输入一个字符:");
scanf(" %c", &c); // 注意空格可以忽略前导空白
printf("请输入一个字符串:");
scanf("%s", str);
printf("您输入的整数是:%d\n", a);
printf("您输入的浮点数是:%f\n", b);
printf("您输入的字符是:%c\n", c);
printf("您输入的字符串是:%s\n", str);
return 0;
}
5. 错误处理
当遇到不符合预期格式的数据时,未被正确解释的部分会留在输入流内等待后续操作;而此时 scanf
的返回值将会小于预期的数量,以此来指示发生了部分失败的情况。
6. 总结
scanf
函数是 C 语言中读取格式化输入的重要函数。通过本文的解析,相信您已经掌握了 scanf
函数的用法与技巧。在实际编程中,灵活运用 scanf
函数,能够提高代码的可读性和易用性。