rendered paste body#include <stdlib.h>#include <stdio.h>#include <iconv.h>wchar_t unicodetowc(unsigned long unicode_value, wchar_t fallback_char){ iconv_t icd; const char *inbuf_ptr; char *outpuf_ptr; char iconv_outbuf[32]; size_t iconv_inlen, iconv_outlen, iconv_res; wchar_t res[2]; int mbtowc_res; icd = iconv_open("ISO8859-1", "UCS-4"); if (icd == (iconv_t)-1) { fprintf(stderr, "iconv_open() failed\n"); return fallback_char; } inbuf_ptr = (char *)&unicode_value; outpuf_ptr = iconv_outbuf; iconv_inlen = sizeof(unicode_value); iconv_outlen = sizeof(iconv_outbuf); iconv_res = iconv(icd, &inbuf_ptr, &iconv_inlen, &outpuf_ptr, &iconv_outlen); fprintf(stderr, "iconv() returned %d, iconv_inlen=%d, iconv_outlen=%d\n", iconv_res, (int)iconv_inlen, (int)iconv_outlen); if (iconv_res == -1) { fprintf(stderr, "iconv() failed\n"); return fallback_char; } fwrite(outpuf_ptr, 1, sizeof(iconv_outbuf) - iconv_outlen, stdout); /* terminate output string */ *(iconv_outbuf + (sizeof(iconv_outbuf) - iconv_outlen)) = '\0'; mbtowc_res = mbtowc(res, outpuf_ptr, 1); if (mbtowc_res == -1) { fprintf(stderr, "mbtowc() failed\n"); return fallback_char; } fprintf(stderr, "mbtowc returned %d, '%s'\n", mbtowc_res, outpuf_ptr); return res[0];}int main( int ac , char *av[] ){ puts("# start."); printf("## -%C-\n", unicodetowc('a', '?')); puts("# done."); return EXIT_SUCCESS;}