#c #ldap #openldap
#c #ldap #openldap
Вопрос:
Я хотел бы использовать переменную в команде ldap ldap_search_s в C. Я использовал strcat для создания нужной мне строки. Ошибка заключается в «неправильном фильтре поиска». Я почти уверен, что это как-то связано с созданной мной строкой. Вот мой код:
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 , amp;res )
Ответ №1:
Я не пробовал это, но, просмотрев документацию, я бы заподозрил, что вам не следует включать двойные кавычки в фильтр:
char *var1="(studentID=";
char *var2= numero;
char *var3= ")";
Комментарии:
1. в
s(n)printf
IMO все это выглядело бы лучше.2. @Mat: Я согласен. Однако в своих ответах я колеблюсь между попыткой ответить на вопрос строго так, как его задали, и попыткой указать на другие потенциальные проблемы (например, более чистый код, возможные переполнения буфера и т.д.).
3. @Dyaz: Круто. Рад, что у вас получилось. Если это было «решение», вы можете установить флажок рядом с ответом, чтобы принять его как решение, но это ваш выбор.