Как использовать переменную в команде LDAP на C?

#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: Круто. Рад, что у вас получилось. Если это было «решение», вы можете установить флажок рядом с ответом, чтобы принять его как решение, но это ваш выбор.