繁体   English   中英

如何在C中用逗号分隔的字符串中扫描数字

[英]How to scan for numbers in strings separated by commas in c

我正在尝试扫描以逗号分隔的字符串中的RGB值

char colors[11]= "255,80,120";
int r,g,b;
sscanf("%3[^,]%d", colors, &r, &g, &b);

但是,当我尝试打印这些值时,它们全都是0。 我应该怎么做? 我只是想把这部分放下来,但是这将被实现为代码,以点亮音乐节拍的LED灯带,因此这将需要循环播放,所以如果有人也可以帮助那部分,那就太好了。

您对int sscanf(const char *str, const char *format, ...)调用是错误的。 第一个参数应该是要用来解析数据的字符串,而不是格式。 另外,您必须将格式从"%3[^,]%d"更改为"%d,%d,%d" 因此,您的代码应为:

sscanf(colors, "%d,%d,%d", &r, &g, &b);

代替:

sscanf("%3[^,]%d", colors, &r, &g, &b);

还可以考虑增加colors的大小,以便它可以容纳字符串的所有字符以及空字符\\0

编辑 :正如@chux在评论中提到的,应该检查sscanf的返回值以处理错误情况:

if (sscanf(colors, "%d,%d,%d", &r, &g, &b) != 3) {
    /* Handle errors. */
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM