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ので、以下は期待どおりに機能します:

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 に答える