ちょっと話と外れるけど>>662の場合に最初だけループの外に書くのは邪道?

c = read();
if (c > -1) {
    append(c);
    c = read();
    while (c > -1) {
        append(FOO);
        append(c);
        c = read();
    }
}