用sscanf解析

时间:2012-09-15 17:20:13

标签: parsing scanf

美好的一天,我尝试解析此查询字符串:

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)

1 个答案:

答案 0 :(得分:0)

您没有显示变量key的定义,但是它打印出(null)这一事实强烈暗示它的值为NULL,并且printf和{{ 1}}试图通过不对NULL指针进行segfaulting来保护你。 (GNU libc实现会这样做; printf将NULL打印为sscanf,而sscanf似乎只是停止解析。)

你可能想要的是:

(null)

虽然您也可能会发现char pkname[11]; char key[31]; 限定符很有用,因为它避免了指定任意字段长度限制的需要。