如何解析用 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\""
来解析。这可以使用如上所示的 "%[^"
格式来完成。
我需要使用 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\""
来解析。这可以使用如上所示的 "%[^"
格式来完成。