Ecco, ora ho capito. Però è strano che K&R abbiano messo quella variabili a caso nel prototipo. Così confondono solo le idee ai niubbi.

Inoltre:
codice:
  for (i=0; i < lim-1 && (c=getchar()) != EOF && c != '\n'; ++i) {
    s[i] = c; }
  if (c == '\n') {
    s[i] = c;
    ++i; }
  s[i] = '\0';
Non capisco in quali circostanze l'uguaglianza c == '\n' possa essere vera.
Il ciclo if non è incluso nel for :master: