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

- 上一篇:如何在excel的方框里打勾勾?
- 下一篇:最小费用最大流:让任务分配更聪明
