0

こんにちは、私はこのクエリ文字列を解析しようとしました:

pkname=Paras&key=password123

このコードで:

printf("Content-type:text/html\n\n");

printf("<html><body>"); 

data = getenv("QUERY_STRING");

if(data){
    sscanf(data, "pkname=%10[^&]&key=%30[^&]&", pkname, key);

    printf("%s", pkname);
    printf("%s", key);

}

printf("</html></body>");

しかし、その出力は常にnullであるため、キーを正しく取得できないようです:

Paras(null)
4

1 に答える 1

0

変数の定義は表示されませんkeyが、出力されるという事実(null)は、その値が NULL であること、および両方が NULL ポインターでセグメンテーション違反を起こさないように保護しようとしていることを強く示唆していprintfますsscanf。(GNU libc 実装はそれを行います。printf は NULL を出力し(null)、sscanf は解析を停止したように見えます。)

おそらくあなたが望んでいたのは次のようなものでした:

char pkname[11];
char key[31];

ただし、m任意のフィールド長制限を指定する必要がなくなるため、修飾子も役立つ場合があります。

于 2012-09-16T05:23:34.340 に答える