C 库函数 - scanf

scanf是格式输入函数,在使用scanf函数时要加上#include <stdio.h>,简单记录下基本用法。

scanf 类型说明符:

类型 合格的输入 参数的类型
%a、%A 读入一个浮点值(仅 C99 有效)。 float *
%c 单个字符:读取下一个字符。如果指定了一个不为 1 的宽度 width,函数会读取 width 个字符,并通过参数传递,把它们存储在数组中连续位置。在末尾不会追加空字符。 char *
%d 十进制整数:数字前面的 + 或 - 号是可选的。 int *
%e、%E、%f、%F、%g、%G 浮点数:包含了一个小数点、一个可选的前置符号 + 或 -、一个可选的后置字符 e 或 E,以及一个十进制数字。两个有效的实例 -732.103 和 7.12e4 float *
%lf %lf代表双精度浮点型数据(double)。 double *
%i 读入十进制,八进制,十六进制整数 。 int *
%o 八进制整数。 int *
%s 字符串。这将读取连续字符,直到遇到一个空格字符(空格字符可以是空白、换行和制表符)。 char *
%u 无符号的十进制整数。 unsigned int *
%x、%X 十六进制整数。 int *
%p 读入一个指针 。
%[] 扫描字符集合 。
%% 读 % 符号。

实例

输入输出例子

1
2
3
4
5
6
7
8
//输入int:int
scanf("%d:%d",&a,&b);

//输入字符串
char str[20];
printf("请输入一串字符: ");
scanf("%s", str);
printf("这个字符串为: %s\n", str);

进制输入输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* 使用scanf和printf处理八进制、十进制和十六进制整数 */
#include <stdio.h>

int main(void) {
int int_dec, int_hex, int_oct;
int constant = 74;

/* 用三种进制形式给整型变量赋值 */
scanf("%d", &int_dec); /* 10 */
scanf("%x", &int_hex); /* 16 */
scanf("%o", &int_oct); /* 8 */

/* 用十进制的形式打印三个变量 */
printf("int_dec(11) = %d\n", int_dec); /* 第14行 */
printf("int_hex(11) = %d\n", int_hex); /* 第15行 */
printf("int_oct(11) = %d\n", int_oct); /* 第16行 */

/* 把十进制的74用三种进制分别打印 */
printf("(Dec)74 = %d\n", constant);
printf("(Hex)74 = %x\n", constant);
printf("(HeX)74 = %X\n", constant); /* 输出格式为大写 */
printf("(Oct)74 = %o\n", constant);

return 0;
}
//Demo Source: http://yuncode.net/code/c_50b44383d3adc52