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

How to parse a word enclosed in quotes in C?

我需要使用 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

scanf family of functions简单模式匹配。因此你可以做类似

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

"%[^" 格式匹配任何 除了 结束前的字符 "]".


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

为了更通用,跳过冒号和所有白色-space(带有循环和isspace),这将让您只剩下"\"11:22:33:44:55:66\"" 来解析。这可以使用如上所示的 "%[^" 格式来完成。