Buenas estaba viendo una posible implementacion de la función fgets, que esta en el libro "el lenguaje de programacion C".
char *fgets(char *s, int n, FILE *iop)
{
register int c;
register char *cs;
cs=s;
while (--n>0&&(c=getc(iop))!=EOF)
if ((*cs++=c)=='\n)
break;
*cs='\0';
return (c==EOF&&cs==s)?NULL : s;
}
mi duda es, para que fgets funcione "s" debe ser un arreglo o tener asignado una memoria con malloc o calloc y n no puede ser mayor a la cantidad de celdas reservadas.
Exactamente. fgets va a presuponer que 's' apunta a una dirección válida con al menos un tamaño de 'n'.