LINUX.ORG.RU

iconv()


0

0

Вот столкнулся с этой либой и.... мне надо перекодировать строчку, а что ей надо я не могу понять...объясните плз...передавал ей и двумерный, и одномерный массив, совсем запутался.
Вот в ф-ии main(int argc, char **argv) в итоге же в argv получается массив слов, а в объявлении iconv:
size_t iconv(iconv_t cd,
char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
Объясните какой я должен создать массив (ссылку?) чтобы она корректно понималось функцией. Спасибо.

anonymous

Делаешь 2-а буфера:
 char inbuf[IN_LEN];
 char outbuf[OUT_LEN];
 size_t inlen = IN_LEN;
 size_t outlen = OUT_LEN;

Затем, объявляешь переменные:
 char ** pinb = &inbuf;
 char ** poutb= &outbuf;
 size_t* pinl = &inlen;
 size_t* poutl= &outlen;

Делаешь вызов:
iconv( cd, pinb, pinl, poutb, poutl);

т.к. iconv меняет значения pinb, pinl, poutb, poutl внутри себя 

PETER ★★
()
Ответ на: комментарий от anonymous

не знаю, правда, что за библиотека, и что за функция, но один момент настораживает - если iconv возвращает новые значения указателей, то их по-видимому где-то потом и delete надо делать? и зачем тогда вообще массив объявлять? char *pntr; iconv(&pntr...);

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.