>str_size = sizeof(str)/sizeof(str[0]); //文字のサイズ

これは、文字のサイズじゃなくて配列の個数だと思うのだが。
strlen()とか使う。

しかし、2バイト文字はこのまま(char)だとうまくいかない。
わかるね?
そして、
>str[i] = str[j];
文字列上書きしてるだろ。