34 lines
453 B
C
34 lines
453 B
C
/*
|
|
* 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 <stdio.h>
|
|
|
|
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;
|
|
}
|
|
|
|
|
|
|