MEJOR SITIO PARA DESARROLLADORES WEB
C Idioma. W3Schools en español. Lecciones para principiantes

Ua En De

C Leer archivos


Leer un archivo

En el capítulo anterior, escribimos en un archivo usando w y a modos dentro del fopen() función.

Para leer un archivo, puede utilizar el modo r:

Ejemplo

FILE *fptr;

// Abrir un archivo en modo lectura
fptr = fopen("filename.txt", "r");

Esto hará que el filename.txt se abra para lectura.

Requiere un poco de trabajo leer un archivo en C. ¡Aguanta! Te guiaremos paso a paso.

A continuación, necesitamos crear una cadena que debería ser lo suficientemente grande como para almacenar el contenido del archivo.

Por ejemplo, creemos una cadena que pueda almacenar hasta 100 caracteres:

Ejemplo

FILE *fptr;

// Abrir un archivo en modo lectura
fptr = fopen("filename.txt", "r");

// Almacenar el contenido del archivo
char myString[100];

Para leer el contenido de filename.txt, podemos usar la función fgets().

La función fgets() toma tres parámetros:

Ejemplo

fgets(myString, 100, fptr);
  1. El primer parámetro específica dónde almacenar el contenido del archivo, que estará en la matriz myString que acabamos de crear.
  2. El segundo parámetro especifica el tamaño máximo de datos a leer, que debe coincidir con el tamaño de myString (100).
  3. El tercer parámetro requiere un puntero de archivo que se utiliza para leer el archivo (fptr en nuestro ejemplo).

Ahora, podemos imprimir la cadena, que generará el contenido del archivo:

Ejemplo

FILE *fptr;

// Abrir un archivo en modo lectura
fptr = fopen("filename.txt", "r");

// Almacenar el contenido del archivo
char myString[100];

// Lee el contenido y guárdalo en su interior myString
fgets(myString, 100, fptr);

// Imprimir el contenido del archivo
printf("%s", myString);

// Cerrar el archivo
fclose(fptr);

Hello World!

Ejecutar ejemplo »

Nota: La función fgets solo lee la primera línea del archivo. Si recuerdas, había dos líneas de texto en filename.txt.

Para leer cada línea del archivo, puede utilizar un bucle while:

Ejemplo

FILE *fptr;

// Abrir un archivo en modo lectura
fptr = fopen("filename.txt", "r");

// Almacenar el contenido del archivo
char myString[100];

// Lee el contenido e imprímelo
while(fgets(myString, 100, fptr)) {
  printf("%s", myString);
}

// Cerrar el archivo
fclose(fptr);

Hello World!
Hi everybody!

Ejecutar ejemplo »

Buenas prácticas

Si intenta abrir un archivo para leer que no existe, la función fopen() devolverá NULL.

Consejo: Como buena práctica, podemos usar una declaración if para probar NULL e imprimir texto en su lugar (cuando el archivo no existe):

Ejemplo

FILE *fptr;

// Abrir un archivo en modo lectura
fptr = fopen("loremipsum.txt", "r");

// Imprima algún texto si el archivo no existe
if(fptr == NULL) {
  printf("No puedo abrir el archivo.");
}

// Cerrar el archivo
fclose(fptr);

Si el archivo no existe, se imprime el siguiente texto:

No puedo abrir el archivo.

Ejecutar ejemplo »

Con esto en mente, podemos crear un código más sustentable si usamos nuestro ejemplo anterior de "leer un archivo" nuevamente:

Ejemplo

Si el archivo existe, lea el contenido e imprímalo. Si el archivo no existe imprime un mensaje:

FILE *fptr;

// Abrir un archivo en modo lectura
fptr = fopen("filename.txt", "r");

// Almacenar el contenido del archivo
char myString[100];

// Si el archivo existe
if(fptr != NULL) {

 // Lee el contenido e imprímelo
  while(fgets(myString, 100, fptr)) {
    printf("%s", myString);
  }

// Si el archivo no existe
} else {
  printf("No puedo abrir el archivo.");
}

// cerrar el archivo
fclose(fptr);

Hello World!
Hi everybody!

Ejecutar ejemplo »