Leer hasta el final del archivo en C
-
una descripción general de
End-of-File (EOF)
en C - Manejo de archivos en C
-
Use
EOF
para 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()
. Elgetc()
es un comando que lee un carácter a la vez de un archivo, y usamos el métodogetw()
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 comandoputc()
escribirá un solo carácter en un archivo, yputw()
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:
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