我需要使用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
答案 0 :(得分:3)
scanf
family of functions执行简单模式匹配。因此,您可以做类似的事情
sscanf(str, "\"mac\" : \"%[^\"]\"", second_string);
"%[^"
格式与所有{em> 结束符"]"
之前的字符匹配。
对于更通用的解决方案,您可以找到分隔的':'
(例如,使用strchr
),而仅解析字符串的最后一部分(在':'
之后)。
要更加通用,请跳过冒号和所有空格(带有循环和isspace
),这将使您仅需"\"11:22:33:44:55:66\""
进行解析。可以使用上面显示的"%[^"
格式来完成。