[英]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.