1583

8 分钟

#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;注意,参数是 &xx 的地址
  • 最后通过 printf 打印 x 的值

运行结果:

请输入一个整数:10 你输入的是:10

#匹配字符集合

匹配字符集合用于指定匹配某些字符,其格式为 %[set]。例如:

  • %[abc] 只读取 abc,遇到其它字符时停止匹配
  • %[^abc] 只读除了 abc 以外的字符,遇到 abc时停止匹配
  • %[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

创建于 2025/6/30

更新于 2025/6/30