Parsing sscanf解析

Parsing sscanf解析,parsing,scanf,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, ke

您好,我尝试分析此查询字符串:

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

您没有显示变量
key
的定义,但它打印为
(null)
这一事实强烈表明它的值为null,并且
printf
sscanf
都试图通过不在null指针上分段故障来保护您。(GNULBC实现就是这样做的;printf将NULL打印为
(NULL)
,而sscanf似乎只是停止解析。)

你可能想要的是:

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

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