2011-04-06 36 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