美好的一天,我尝试解析此查询字符串:
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)
答案 0 :(得分:0)
您没有显示变量key
的定义,但是它打印出(null)
这一事实强烈暗示它的值为NULL,并且printf
和{{ 1}}试图通过不对NULL指针进行segfaulting来保护你。 (GNU libc实现会这样做; printf将NULL打印为sscanf
,而sscanf似乎只是停止解析。)
你可能想要的是:
(null)
虽然您也可能会发现char pkname[11];
char key[31];
限定符很有用,因为它避免了指定任意字段长度限制的需要。