如何解析C中用引号引起来的单词?

时间:2018-11-09 16:30:42

标签: c string mac-address

我需要使用c从诸如"mac" : "11:22:33:44:55:66"之类的字符串中解析mac地址。

我的代码:

#include <stdio.h>
#include <string.h>
#include <stddef.h>

int main() {
    char str[50] = "\"mac\" : \"11:22:33:44:55:66\"";
    char second_string[20];
    sscanf(str, "what should come here?", second_string);
    printf("%s\n", second_string);
}

我的输出应该是:

  

11:22:33:44:55:66

1 个答案:

答案 0 :(得分:3)

scanf family of functions执行简单模式匹配。因此,您可以做类似的事情

sscanf(str, "\"mac\" : \"%[^\"]\"", second_string);

"%[^"格式与所有{em> 结束符"]"之前的字符匹配。


对于更通用的解决方案,您可以找到分隔的':'(例如,使用strchr),而仅解析字符串的最后一部分(在':'之后)。

要更加通用,请跳过冒号和所有空格(带有循环和isspace),这将使您仅需"\"11:22:33:44:55:66\""进行解析。可以使用上面显示的"%[^"格式来完成。