Leer hasta el final del archivo en C

Waqar Aslam 15 febrero 2024
  1. una descripción general de End-of-File (EOF) en C
  2. Manejo de archivos en C
  3. Use EOF para leer hasta el final del archivo en C
Leer hasta el final del archivo en C

En este artículo, explicaremos cómo escribir en un archivo y leerlo hasta que se haya leído por completo utilizando el lenguaje de programación C.

una descripción general de End-of-File (EOF) en C

EOF es la abreviatura de fin de archivo. Indica que se ha llegado al final del archivo y que no habrá más datos más allá de este punto.

Ctrl+D es el carácter que se debe ingresar en las computadoras Linux y OS X para inducir una condición de fin de archivo. El atajo para Windows es Ctrl+Z.

Este carácter solo operará si es el primer carácter de una línea, es decir, el primer carácter después de un ENTER. Sin embargo, los requisitos para esto son diferentes dependiendo del sistema operativo.

Es posible que el sistema no note el carácter EOF hasta que lo haya seguido con un ENTER. Esto se debe a que la entrada de la consola suele estar orientada a la línea.

Manejo de archivos en C

Muchos datos permanentes se guardan en un archivo si uno elige hacerlo. Como muchos otros lenguajes de programación, C tiene las siguientes funciones para administrar archivos.

  • Crear un archivo

    Creando un nuevo archivo usando fopen().

  • abrir un archivo

    Abriendo un nuevo archivo que ya existe usando fopen().

  • leer un archivo

    Lectura de un bloque de datos de un archivo mediante el comando fscanf(). El getc() es un comando que lee un carácter a la vez de un archivo, y usamos el método getw() para leer un número entero de un archivo.

  • Escribir en un archivo

    El fprintf() se utiliza para escribir un bloque de datos en un archivo. El comando putc() escribirá un solo carácter en un archivo, y putw() es una abreviatura para escribir un número entero en un archivo.

  • cerrar un archivo

    El proceso de cerrar un archivo con el comando fclose().

Use EOF para leer hasta el final del archivo en C

Veamos un ejemplo en el que usaremos todas las funciones de administración para leer un archivo hasta el final.

Para comenzar, primero debe construir una función main() y luego importar las bibliotecas necesarias antes de poder continuar.

#include <stdio.h>

int main() {}

Declara una variable llamada fp dentro de la función principal. Esta variable será un puntero de archivo que hará referencia al tipo file.

FILE* fp;

Cree una variable llamada ch y un puntero de nombre con la etiqueta * name, los cuales deben ser del tipo de datos char. El puntero del nombre debe incluir el nombre del archivo.

char ch;
char* name = "eof.txt";

Ahora abriremos un archivo usando la función integrada fopen(). Se puede crear o abrir un archivo para lectura y escritura.

Así, el nombre del archivo y el modo w serán los parámetros que proporcionemos a la función fopen(). La letra W indica que el archivo está abierto en el modo de escritura en la situación actual.

fp = fopen(name, "w");
printf("Enter the text to write on the file\n");

Si el archivo aún no está disponible en el sistema, primero se generará y luego se abrirá. Si existe un archivo en el sistema, este método lo opená inmediatamente.

Implementaremos un bucle while que continuará iterando hasta que llegue al final del archivo utilizando la variable EOF. Dentro del bucle, escribiremos el texto que el usuario ha proporcionado usando la función putc() y pasándole los parámetros ch para el tipo de char y *fp para el tipo de archivo.

while ((ch = getchar()) != EOF) {
  putc(ch, fp);
}

Hemos escrito el texto en el archivo. Cerremos el archivo usando la función fclose().

fclose(fp);

El siguiente paso es leer el archivo y mostrar su información en la consola. Comenzamos mostrando un mensaje al usuario.

printf("\nText wrote on the file `%s`:\n", name);

Abriremos el archivo nuevamente usando la función fopen(), pero esta vez proporcionaremos el modo como r ya que esto indica que el archivo se abre en el modo Read.

fp = fopen(name, "r");

Implementaremos un bucle while que continuará iterando hasta que llegue al final del archivo utilizando la variable EOF. Imprimiremos los caracteres escritos dentro del bucle en el archivo abierto.

while ((ch = getc(fp)) != EOF) {
  printf("%c", ch);
}

Mediante el método feof() determinaremos si el archivo ha terminado o no de escribirse. Proporcionaremos un mensaje al usuario si este resulta ser el caso.

if (feof(fp)) printf("\nReached to the end of file.");

Hemos leído el texto en el archivo. Cerremos el archivo usando la función fclose().

fclose(fp);

Código fuente completo:

#include <stdio.h>

int main() {
  FILE* fp;
  char ch;
  char* name = "eof.txt";

  fp = fopen(name, "w");

  printf("Enter the text to write on the file\n");
  while ((ch = getchar()) != EOF) {
    putc(ch, fp);
  }
  fclose(fp);

  printf("\nText wrote on the file `%s`:\n", name);
  // reading
  fp = fopen(name, "r");
  while ((ch = getc(fp)) != EOF) {
    printf("%c", ch);
  }

  if (feof(fp)) printf("\nReached to the end of file.");

  fclose(fp);
  return 0;
}

Después de ingresar el texto que desea escribir en el archivo, presione la tecla ENTER, presione la tecla Ctrl+Z y luego presione la tecla tecla ENTER una vez más para continuar.

Producción:

leer hasta el final del archivo

Waqar Aslam avatar Waqar Aslam avatar

I am Waqar having 5+ years of software engineering experience. I have been in the industry as a javascript web and mobile developer for 3 years working with multiple frameworks such as nodejs, react js, react native, Ionic, and angular js. After which I Switched to flutter mobile development. I have 2 years of experience building android and ios apps with flutter. For the backend, I have experience with rest APIs, Aws, and firebase. I have also written articles related to problem-solving and best practices in C, C++, Javascript, C#, and power shell.

LinkedIn

Artículo relacionado - C File