1
我正在尝试学习scanf格式字符串,并且遇到问题需要解决此问题。我试图格式的字符串为:scanf格式字符串
“someKey” =“someValue中”
这是我使用的代码:
void test()
{
char buffer[2][128];
int amountRead;
char* input = "\"test\"=\"hello\"";
int result = sscanf(input, "\"%128[a-zA-Z0-9]s\"=\"%128[a-zA-Z0-9]s\"%n", buffer[0], buffer[1], &amountRead);
printf("input = %s\nresult = %d\nstr1 = %s\nstr2 = %s\namountread = %d\n", input, result, buffer[0], buffer[1], amountRead);
}
出于某种原因,它仅管理扫描第一个值:
input = "test"="hello"
result = 1
str1 = test
str2 =
amountread = 0
非常奇怪,它仍然把“测试”到第一个字符串参数。 – charliehorse55
它匹配“测试”,然后无法匹配's'并停止扫描。 – aragaer
@ charliehorse55添加到此答案:您可以使用'[^ \“]'而不是'[a-zA-Z0-9]' – MOHAMED