Don't you mean
char c = getchar();
while (c != EOF) {
c = getchar();
…
}
?Which not only reads badly but requires writing the "producer" twice. Though alternatively you could:
while (1) {
c = getchar();
if (c == EOF) { break; }
...
}