#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