1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
/* * fgets.c */ #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) { s = NULL; break; } *p++ = ch; n--; if (ch == '\n') break; } if (n) *p = '\0'; return s; } __ALIAS(char *, fgets_unlocked, (char *, int, FILE *), fgets)