http://codepad.org/C3qHH5gy

16行目は
×str[i] = ch;
○str[i++] = ch;
だった。