当前位置:首页C++ > 正文

C/C++ 逗号分割输入

作者:野牛程序员:2025-09-19 11:24:51C++阅读 2458
C/C++ 逗号分割输入

在 C++/C 中,如果输入格式是 用逗号分隔的数据scanf 也能直接处理,只需要在格式字符串里写上逗号即可。


基本示例:固定数量、简单整数

#include <cstdio>
int main() {
    int a, b, c;
    // 输入示例:10,20,30
    if (scanf("%d,%d,%d", &a, &b, &c) == 3) {
        printf("a=%d b=%d c=%d\n", a, b, c);
    }
    return 0;
}

👉 如果输入 10,20,30,结果会是 a=10 b=20 c=30
要点scanf 会严格匹配输入里的逗号,少写或多写都会出错。


带空格的情况

#include <cstdio>
int main() {
    int x, y;
    // 输入示例:  15 ,  27
    scanf(" %d , %d", &x, &y);
    printf("x=%d y=%d\n", x, y);
    return 0;
}

在格式串里写 空格scanf 会自动忽略任意数量的空白(空格、换行、Tab)。


不定数量数据(循环读取)

如果数据数量不确定(例如输入 1,2,3,4,5),可以循环读取:

#include <cstdio>
int main() {
    int val;
    // 循环读直到无法再匹配
    while (scanf("%d,", &val) == 1) {
        printf("%d\n", val);
    }
    return 0;
}

输入 1,2,3,4,5 会逐个输出。
但最后一个数据如果没有逗号(如 ...5),格式串里的 , 会匹配失败。
解决办法:让最后一个数字用 “可选逗号” 格式,比如:

while (scanf("%d%*[,]", &val) == 1) {
    printf("%d\n", val);
}

解释:

  • %d 读整数

  • %*[,] 表示匹配一个逗号,但不保存(* 的作用是丢弃)

  • 如果最后没有逗号,匹配不会报错

这样就能正确读取 1,2,3,4,5


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • C/C++ 逗号分割输入
  • 相关推荐

    最新推荐

    热门点击