Блин, глаза слипаются, с С уже года полтора не сталкивался. Памажыте, плз...
Вроде все как надо.. Где ошибка (кроме ДНК)
#include <iconv.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main(){
size_t ret;
size_t size1;
size_t size2;
char *inp;
char *res;
iconv_t link;
link = iconv_open("WINDOWS-1251","KOI8-R");
res = (char *)malloc(50);
inp = (char *)malloc(50);
scanf("%s",inp);
size1 = strlen(inp);
size2 = size1;
printf("input: \"%s\" (length: %d)\n",inp,size1);
ret = iconv(link,(char **) &inp, &size1, (char **)&res, &size2);
printf("result: %d, errno: %d\n",ret,errno);
printf("ouput: \"%s\" (length: %d %d)\n",res,strlen(res),size2);
printf("decoded: %i of %i\n",size2,size1);
iconv_close(link);
return 0;
}
Запускаю сие так:
gcc testiconv.c -o testiconv ; echo "фвываыва"|./testiconv
Получаю:
input: "фвываыва" (length: 8)
result: 0, errno: 0
ouput: "d symbol: gconv_end" (length: 19 0) (мусор в output, левая длина)
decoded: 0 of 0
При других комбинациях кодировок случается result=-1...
glibc v2.3.4
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.