/* * fgets.c * * This will be very slow due to the implementation of getc(), * but we can't afford to drain characters we don't need from * the input. */ #include char *fgets(char *s, int n, FILE * f) { int ch; char *p = s; while (n > 1) { ch = getc(f); if (ch == EOF) { *p = '\0'; return (p == s) ? NULL : s; } *p++ = ch; if (ch == '\n') break; n--; } if (n) *p = '\0'; return s; }