我有一个名为buffer
的字符串,其中存储了以下数据:
Rb [7,0] 64
使用sscanf()
,我想执行以下操作:
Rb
并将其存储在名为string
name
中
7
并将其存储在名为int
posx
变量中
0
并将其存储在名为int
posy
变量中
64
并将其存储在名为int
battery_level
变量中
我尝试了以下操作,但它不起作用:
sscanf(buffer, "%s[^\ ] [%d,%d] %d", name, &posx, &posy, &battery_level);
答案 0 :(得分:2)
我看到的问题:
"\ "
不是有效的转义序列。"%s[^ ]"
没有做你期望它做的事情。您需要使用"%[^ ]"
。您可以使用
sscanf(buffer, "%s [%d,%d] %d", name, &posx, &posy, &battery_level);
或
sscanf(buffer, "%[^ ] [%d,%d] %d", name, &posx, &posy, &battery_level);
两者都有效。请参阅http://ideone.com/QNuQuY
上的工作代码答案 1 :(得分:0)
希望它对你有所帮助。
我编写了一个代码,其中输入将被第一个空格' '
符号划分,您也可以使用其他字符,并且改进此逻辑可以获得所需的结果:
#include <stdio.h>
int main()
{
char buffer[] = "Rb [7, 0] 64";
int posx, posy, batttery_level
sscanf(buffer, "%[^ ] [%d,%d] %d", name, &posx, &posy, &battery_level);
printf("%s [%d,%d] %d\n", name, posx, posy, battery_level);
return 0;
}