2011-04-06 62 views
2

我想在C中的ldap命令ldap_search_s中使用一個變量。我用strcat創建了我需要的字符串。錯誤是「錯誤的搜索過濾器」。我很確定它與我創建的字符串有關。這裏是我的代碼:如何在C中的LDAP命令中使用變量?

char *numero = randomID1() ; 
char *var1="\"(studentID="; 
char *var2= numero; 
char *var3= ")\" "; 
char var4[80]; 


strcpy (var4,var1); 
    strcat (var4, var2); 
    strcat (var4,var3); 
char *attr[] = { "cn","sn","studentID", NULL }; 



ldap_search_s(ld, "dc=******,dc=fr", 
       LDAP_SCOPE_SUBTREE, var4, attr , 0 , &res) 

回答

3

我還沒有嘗試過,但看着文件後,我會懷疑你不應該包括在過濾器的雙引號:

char *var1="(studentID="; 
char *var2= numero; 
char *var3= ")"; 
+0

這整件事情用's(n)printf' IMO看起來更好。 – Mat 2011-04-06 20:27:45

+0

@Mat:我同意。儘管如此,我在回答問題時試圖嚴格按照問題回答這個問題,而不是試圖指出其他潛在問題(例如,更乾淨的代碼,可能的緩衝超限等)。 – 2011-04-06 20:33:50

+0

非常感謝......它實際上有效 – Dyaz 2011-04-07 16:15:54