我正在尝试扫描以逗号分隔的字符串中的RGB值
char colors[11]= "255,80,120";
int r,g,b;
sscanf("%3[^,]%d", colors, &r, &g, &b);
但是当我尝试打印出这些值时,它们都是0。我该怎么做?我只是试图让这部分失效,但这将被实现到代码中,点亮LED条带到音乐的节拍,所以这将需要循环所以如果任何人都可以帮助这个部分也是伟大的。
答案 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