iconvとヌル終端文字
昨日の戸惑った点。
iconvは出力にヌル終端文字を付加してくれはしないので、outbytesleftを見て何バイト分書かれたかを計算しそこからヌル終端文字を付加する必要がある。
if(iconv(iconv_cd, &iconv_in, &iconv_inbytesleft, &iconv_out, &iconv_outbytesleft) == -1){ fprintf(stderr, "Error: iconv() failed\n"); return -1; } /* get length of conv_cur_line by iconv_outbytesleft */ len_conv_cur_line = len_cur_line * 2 - iconv_outbytesleft; /* set zero to the end of the string */ conv_cur_line[len_conv_cur_line - 2] = '\0'; len_conv_cur_line = len_conv_cur_line - 2;