Deja de usar fscanf para leer archivos de texto. Es una trampa. A menos que sus datos estén perfectamente formateados hasta el último espacio en blanco, fscanf se atascará, desalineará y hará que la depuración sea una pesadilla. ¿El camino confiable? Abra con el modo r, use fgets para capturar líneas completas y luego analice las piezas que necesita.
Esta es una forma sencilla de leer un archivo y volcar su contenido en la pantalla sin bloquear el sistema.
La lógica aquí es engañosamente simple. fgets lee una línea, hasta 1000 caracteres en este búfer, y devuelve NULL solo cuando llega al marcador de fin de archivo. Imprime directamente en la salida estándar mediante printf. ¿Notas la falta de \n en la cadena de formato printf? Eso es intencional. fgets agrega automáticamente el carácter de nueva línea al final de la cadena que lee. Si agrega su propio \n, obtendrá doble espacio. Más importante aún, si una línea tiene más de 1000 caracteres, fgets no agregará la nueva línea. Puede detectar esta lectura incompleta comprobando el \n que falta, un truco útil si se trata de datos con formato incorrecto.
“Utilice fgets para leer cada línea y luego analice las piezas que necesita”.
Hay un error crítico que hace tropezar incluso a los desarrolladores más experimentados. No escriba fclose como close. El compilador no lo captará. La función “cerrar” existe y, para scripts pequeños que abren y cierran un archivo sólo una o dos veces, puede parecer que funciona bien. Es una mentira.
Si ejecuta esto dentro de un bucle, “cerrar” no libera correctamente los recursos del archivo subyacente. Con el tiempo, su programa se queda sin identificadores de archivos o espacio de memoria disponibles y falla con fuerza. fclose es la única forma correcta de cerrar la puerta. “cerrar” es un atajo que conduce a un ladrillo. Cíñete a la biblioteca estándar. Mantenga sus buffers controlados. No dejes que un error tipográfico devore tu memoria.

























