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>");

但我似乎无法正确获取密钥,因为它的输出始终为空:

Paras(null)
4

1 回答 1

0

您没有显示变量的定义,key但它打印出来的事实(null)强烈表明它的值为 NULL,并且两者printfsscanf试图通过不对 NULL 指针进行段错误来保护您。(GNU libc 实现这样做; printf 打印 NULL as(null)并且 sscanf 似乎只是停止解析。)

你可能想要的是这样的:

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

尽管您可能还会发现m限定符很有用,因为它避免了指定任意字段长度限制的需要。

于 2012-09-16T05:23:34.340 回答