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

时间:2018-04-21 16:57:02

标签: c string scanf

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

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

但是当我尝试打印出这些值时,它们都是0。我该怎么做?我只是试图让这部分失效,但这将被实现到代码中,点亮LED条带到音乐的节拍,所以这将需要循环所以如果任何人都可以帮助这个部分也是伟大的。

1 个答案:

答案 0 :(得分:1)

您对MainActivity的来电是错误的。第一个参数应该是您要解析数据而不是格式的字符串。此外,您必须将格式从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

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

sscanf