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;

}


출처 - http://minimonk.tistory.com/1543

'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
: