inconv source (iconv_open, iconv, iconv_close)
Language/C 2012. 5. 16. 17:40#include "stdio.h"
#include "string.h"
#include "iconv.h"
#include "errno.h"
#define BUFF_SIZE 64
int main()
{
iconv_t cd = iconv_open("UNICODE", "UTF-8");
if (cd == (iconv_t)(-1))
{
perror("iconv_open");
return 0;
}
char inBuf[BUFF_SIZE] = "Hello world";
int inBufSize = sizeof(inBuf);
char outBuf[BUFF_SIZE];
int outBufSize = sizeof(outBuf);
memset(outBuf, 0, outBufSize);
// convert
size_t readBytes = strlen(inBuf);
size_t writeBytes = sizeof(outBuf);
char* in = inBuf;
char* out = outBuf;
printf("readBytes:%d writeBytes:%d\n",readBytes,writeBytes);
if (iconv(cd, &in, &readBytes, &out, &writeBytes) == -1)
{
printf("failed to iconv errno:%d EILSEQ:%d\n", errno, EILSEQ);
}
else
{
int idx;
printf("in:%x out:%x\n",in,out);
printf("readBytes:%d writeBytes:%d\n",readBytes,writeBytes);
for(idx = 0; idx < BUFF_SIZE; idx++)
{
printf("%03d %c %x\t\t", idx, inBuf[idx], inBuf[idx]);
printf("%03d %c %x\n", idx, outBuf[idx], outBuf[idx]);
}
outBuf[writeBytes] = '\0';
}
iconv_close(cd);
return 0;
}
'Language > C' 카테고리의 다른 글
sscanf (0) | 2012.05.29 |
---|---|
typedef & struct (1) (0) | 2012.05.23 |
inconv.h (0) | 2012.05.16 |
read() 파일 읽기 (0) | 2012.05.11 |
execl 다른 프로그램 실행 (0) | 2012.04.26 |