#C 语言获取输入
与标准库函数 printf 相对,C 语言提供标准库函数 scanf 用于获取输入。
int scanf(const char* restrict format, ...);
标准库函数 scanf 的第一个参数是一个 格式化字符串,其中以 %
开头的子串是格式化占位符;
之后可以携带任意数量的参数,这些参数按顺序根据格式化占位符读取输入。
其中:
%%
表示读取百分号(%
)本身%d
表示读取int
%u
表示读取unsigned int
%f
表示读取float
%c
表示读取char
示例:
#include <stdio.h>
int main(void)
{
int x = 0;
printf("请输入一个整数:");
scanf("%d", &x);
printf("你输入的是:%d\n", x);
return 0;
}
说明:
- 首先通过
printf
打印提示信息"请输入一个整数:"
- 然后
scanf("%d", &x);
从输入中读取一个整数并写入x
;注意,参数是&x
即x
的地址 - 最后通过
printf
打印x
的值
运行结果:
请输入一个整数:10 你输入的是:10
#匹配字符集合
匹配字符集合用于指定匹配某些字符,其格式为 %[set]
。例如:
%[abc]
只读取a
,b
或c
,遇到其它字符时停止匹配%[^abc]
只读除了a
,b
,c
以外的字符,遇到a
,b
或c
时停止匹配%[a-z]
只读取小写字母,遇到其它字符时停止匹配%[0-9]
只读取数字,遇到其它字符时停止匹配
#赋值抑制
在格式化占位符中,可以使用一个星号(*
)表示赋值抑制,也就是将这段输入丢弃,而非写入接收参数。常用于从一段内容中提取部分内容
示例:
#include <stdio.h>
int main(void)
{
int green = 0;
printf("请输入 RGB 值:");
scanf("%*d, %d, %*d", &green);
printf("绿色通道为:%d\n", green);
return 0;
}
说明:
- 前后两个
%*d
各读取一个整数并丢弃 - 第二个
%d
读取一个整数,并写入接收参数green
运行结果:
请输入 RGB 值:36, 35, 28 绿色通道为:35