我正在接收串行命令,我希望能够解析昏迷之间的数据。例如,"SET,1,3,1"
,然后能够将1,3,1
解析为整数。在做了一些阅读之后,我尝试使用sscanf
完成此操作,但是当我监视变量时,它们没有正确设置。
这是我的代码:
if (strncmp(command_buf, "SET,1,3,1", 9) == 0) {
u32_t port_number;
u32_t pin_number;
u32_t logic_level;
sscanf(command_buf + 4, "%u,%u,%u", &port_number, &pin_number, &logic_level);
}
我也试过这个例子,但变量是0
u32_t port_number = command_buf[5];
答案 0 :(得分:2)
sscanf(command_buf + 4, "%lu,%lu,%lu", &port_number, &pin_number, &logic_level);
您只需要像这样解析输入字符串。这会奏效。 (u32_t
is 32 bit unsigned long
)。
您可以使用sscanf
执行此操作。因为你想从字符串解析而不是流。
此外,您应该检查sscanf
的返回值,以检查输入是否正确。