2013-03-30 66 views
1

我想寫一個腳本,除了使用sscanf GET請求的數據。我似乎有問題與sscanf解析並傳遞給變量。我認爲這個問題與我的字符類型有關,但也可能與我的正則表達式字符串有關,因爲錯誤會將該組設置爲「%[az,AZ]」而不是「%[az,AZ]」,就像我一樣我期待它。你可以在http://cs.mcgill.ca/~phwang3/cgi-bin/searchRecord.c看到完整的源代碼,但我已經在這裏強調了主要的東西。期望char *但char(*)[20]

我似乎在這條線

if(sscanf(data,"firstName=%[a-z,A-Z]&lastName=%[a-z,A-Z]",&firstName, &lastName)!=2) { 

有問題的變量上面的線爲

char firstName[20] = {0}; 
char lastName[20] = {0}; 

也與此有關之前宣佈將收到一個錯誤

warning: format ‘%[a-z,A-Z’ expects argument of type ‘char *’, but argument 3 has type ‘char * (*)[20]’ [-Wformat] 

,我假設查詢存儲在變量「data」中,並且在poblematic st之前聲明環。

char* data; 
data = getenv("QUERY_STRING"); 

回答

3
if(sscanf(data,"firstName=%[a-z,A-Z]&lastName=%[a-z,A-Z]", 
    &firstName, &lastName)!=2) { 

你要通過firstNamelastName而不是&firstName&lastName

+0

甜!這工作。這是爲什麼呢?我指定了地址而不是指針嗎? –

+0

甚至更​​好的是'&firstName [0]'和'&lastName [0]' –

+3

@JosephSzymborski你必須傳遞一個指向'char'的指針,但是你傳遞了一個指向數組的指針。 – ouah