2012-09-15 45 views
0

日安解析,我試圖解析這個查詢字符串:與sscanf的

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) 

回答

0

您不顯示變量key的定義,但它打印輸出爲(null)強烈建議其值爲NULL,並且printfsscanf都試圖通過不在NULL指針上進行段選擇來保護您。 (在GNU libc的實現做; printf的打印NULL作爲(null)和sscanf似乎只是停止解析。)

什麼你可能想要的是一樣的東西:

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

雖然你也可能會發現m預選賽有用,因爲它避免了指定任意字段長度限制的需要。