Cuando una secuencia stdio
encuentra un error (pero no EOF), el indicador de error de la secuencia se establecerá de modo que ferror()
devolverá distinto de cero. Siempre he supuesto que hay más información disponible en errno
. ¿Pero cómo sé esto?¿Stdio siempre establece errno?
Documentación de algunas funciones [p. man fopen
en Linux] dice que también se establecerá errno
. Sin embargo, man fgets
no menciona errno
en absoluto. Las páginas de información sobre glibc son tranquilizadores:
Además de establecer el indicador de error asociado con la corriente , las funciones que operan sobre las corrientes también establecidas `errno' en el misma manera que las correspondientes funciones de bajo nivel que operar en el archivo descriptores.
Pero no tengo idea de lo fuerte que es esta garantía. ¿Es requerido por el estándar C? ¿Qué sucede en Visual C/C++?
Gracias. Las definiciones POSIX son muy útiles. Por ejemplo, según ellos, "fgets" sí establece errno.Creo que la mejor estrategia para mi caso particular es simplemente escribir para POSIX y luego corregir los problemas de Windows a medida que surgen. –