使用sscanf将缓冲的字节解析为整数 - C

时间:2017-12-07 15:48:51

标签: c parsing

我正在接收串行命令,我希望能够解析昏迷之间的数据。例如,"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];

1 个答案:

答案 0 :(得分:2)

sscanf(command_buf + 4, "%lu,%lu,%lu", &port_number, &pin_number, &logic_level);

您只需要像这样解析输入字符串。这会奏效。 (u32_t is 32 bit unsigned long)。

您可以使用sscanf执行此操作。因为你想从字符串解析而不是流。

此外,您应该检查sscanf的返回值,以检查输入是否正确。