国际访客建议访问 Primers 编程伙伴 国际版站点 > C 教程 > 获取输入 以获得更好的体验。

# C 语言获取输入

与标准库函数 printf 相对,C 语言提供标准库函数 scanf 用于获取输入。

标准库函数 scanf 在标准库头文件 stdio.h 中声明,因此需要通过 #include <stdio.h> 引入。
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-11-27 09:38:05 创建于: 2025-11-27 09:38:05