K&R演習[2-2]

前提

for (i = 0; i < lim - 1 && (c = getchar() != '\n' && c != EOF; i++) {
    s[i] = c;
}

課題

forループに等価なループを、&&あるいは||を使用しないで書け

回答

i = 0;
while ((c = getchar() != EOF) {
    if (c == '\n') {
        break;
    }
    if (i >= (lim - 1) {
        break;
    }
    s[i++] = c;
}