/* * 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 NULL; } *p++ = ch; if ( ch == '\n' ) break; } if ( n ) *p = '\0'; return s; }