1

我正在尝试学习 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
4

1 回答 1

8

玩了一下你的代码,然后转到联机帮助页。

s 匹配一系列非空白字符;

...

[ 匹配指定的可接受字符集中的非空字符序列;

显然在使用时[您不需要s,因此以下操作按预期工作:

int result = sscanf(input, "\"%128[a-zA-Z0-9]\"=\"%128[a-zA-Z0-9]\"%n", buffer[0], buffer[1], &amountRead);
于 2012-12-21T09:43:08.460 回答