Ok questo è il ciclo che ho fatto io
int i = 0;
c = getchar();
while (i < lim - 1)
{
++i;
if ((c = getchar()) != EOF) s[i] = c;
else if (c != '\n') s[i] = c;
}
Questo è il ciclo a cui il mio deve essere equivalente:
for (i = 0; i < lim -1 && (c = getchar()) != EOF && c != '\n'; ++i)
s[i] = c;