En este post veremos los pasos para realizar la lectura de un fichero de texto, para esto es necesario saber que es similar a escuchar música en un vinilo, se deben realizar pasos:
1- Poner el disco y la aguja al inicio del disco.
2- Escuchar la música.
3- Levantar la aguja cuando ya no se quiera escuchar o esperar a que termine de reproducirlo todo.
La aguja en el disco viene a representar un puntero de tipo FILE* que se prepara al inicio del fichero, avanza con cada caracter que lee y finalmente debemos cerrarlo.
Fichero que leeremos:
Primer Paso: Abrir Fichero
FILE* abrirFichero () {
FILE* fptr = NULL; //puntero que abre al inicio del fichero y sirve para recorrerlo
fptr = fopen ("fichero_prueba.txt", "rt"); //apertura de fichero con permiso de lectura
return fptr;
}
Invocación de la función abrirFichero:
FILE* ptrFichero; //declaramos una variable de tipo puntero
ptrFichero = abrirFichero (); //invocamos a la función y guardamos el resultado en la variable puntero
Segundo Paso: Leer Fichero
Esta función leerá el fichero hasta el final
void leerFichero(FILE* fptr )
{
char palabra1 [BUFSIZ];
char palabra2 [BUFSIZ];
int numero;
//La función eof = End Of File devuelve true cuando el puntero llega al final del fichero
while(!feof(fptr))
{
//leemos palabra a palabra (se sabe previamente el formato del fichero)
//sabemos que leemos 2 palabras y un número por registro
//cada iteración del while leerá un registro
fscanf (fptr, "%s", palabra1);
fscanf (fptr, "%s", palabra2);
fscanf (fptr, "%i",&numero);
//imprimimos por pantalla lo que hemos leído
printf("palabra 1: %s, palabra 2: %s, numero: %i \n", palabra1, palabra2, numero);
}
}
Invocación de la función leerFichero:
Sólo puede realizarse si el fichero se llego a abrir (ptrFichero != NULL)
FILE* ptrFichero;
ptrFichero = abrirFichero ();
if(ptrFichero != NULL)
{
leerFichero(ptrFichero);
}
Tercer Paso: Cerrar Fichero
void cerrarFichero (FILE* fptr) {
fclose(fptr);
}
Invocación de la función leerFichero:
Sólo puede realizarse si el fichero se llego a abrir (ptrFichero != NULL)
FILE* ptrFichero;
ptrFichero = abrirFichero ();
if(ptrFichero != NULL)
{
leerFichero(ptrFichero);
cerrarFichero(ptrFichero);
}
El resultado de la ejecución es el siguiente: