En esta guía, aprenderemos cómo realizar operaciones de entrada / salida (E / S) en un archivo usando el lenguaje de programación C.
E / S de archivo C – Tabla de contenido
1. Abrir un archivo
2. Leer un archivo
3. Escribir un archivo
4. Cerrar un archivo
5. Leer y escribir cadenas en un archivo
6. Lectura y escritura de archivos binarios en C
Antes de discutir cada operación en detalle, tomemos un programa C simple:
Un programa C simple para abrir, leer y cerrar el archivo
En el programa anterior, estamos abriendo un archivo newfile.txt
en modo r
, leyendo el contenido del archivo y mostrando en la consola. entendamos cada operación en detalle:
Abrir un archivo
fopen()
se utiliza para abrir un archivo.
Sintaxis:
FILE pointer_name = fopen ("file_name", "Mode");
pointer_name
puede ser cualquier opción.
file_name
es el nombre del archivo que desea abrir. Especifique aquí la ruta completa como «C: \\ myfiles \\ newfile.txt».
Al abrir un archivo, debe especificar el modo. El modo que usamos para leer un archivo es «r ”Que es» modo de solo lectura «.
por ejemplo:
FILE *fp;fp = fopen("C:\\myfiles\\newfile.txt", "r");
La dirección del primer carácter se almacena en pointer fp
.
¿Cómo comprobar si el archivo se ha abierto correctamente?
Si el archivo no se abre correctamente, al puntero se le asignará un valor NULL, por lo que puede escribir la lógica de esta manera :
Este código verificará si el archivo se ha abierto correctamente o no. Si el archivo no se abre, se mostrará un mensaje de error al usuario.
..FILE fpr;fpr = fopen("C:\\myfiles\\newfile.txt", "r");if (fpr == NULL){ puts("Error while opening file"); exit();}
Varios modos de apertura de archivos:
El archivo se abre usando la función fopen()
, mientras se abre, puede usar cualquiera de los siguientes modos según el requisito.
Modo «r»: Es un modo de solo lectura, lo que significa que si el archivo se abre en modo r, no le permitirá escribir y modificar su contenido. Cuando fopen()
abre un archivo correctamente, devuelve la dirección del primer carácter del archivo; de lo contrario, devuelve NULL.
Modo «w»: es una escritura modo único. La función fopen()
crea un nuevo archivo cuando el archivo especificado no existe y si no puede abrir el archivo, devuelve NULL.
Mode » a ”: Con este modo, el contenido se puede agregar al final de un archivo existente. Al igual que en el modo «w», fopen()
crea un nuevo archivo si el archivo no existe. Si no se abre correctamente, devuelve NULL.
El puntero de archivo apunta al último carácter del archivo .
Modo «r +”: este modo es el mismo que el modo «r»; sin embargo, puede realizar varias operaciones en el archivo abierto en este modo. Se le permite leer, escribir y modificar el contenido del archivo. abierto en modo «r +».
El puntero de archivo apunta a: Primer carácter del archivo.
Modo «w +»: Igual que el modo «w», excepto las operaciones que se pueden realizar; el archivo se puede leer, escribir y modificar en este modo.
Modo «a +”: Igual que el modo «a»; puede leer y agregar los datos en el archivo, sin embargo, la modificación de contenido no está permitida en este modo.
Leyendo un archivo
Para leer el archivo, primero debemos abrirlo usando cualquier del modo, por ejemplo, si solo desea leer el archivo, ábralo en modo «r». Según el modo seleccionado durante la apertura del archivo, podemos realizar ciertas operaciones en el archivo.
C Programa para leer un archivo
fgetc (): Esta función lee el carácter desde la posición actual del puntero y, al leerlo correctamente, mueve el puntero al siguiente carácter del archivo. Una vez que los punteros llegan al final del archivo , esta función devuelve EOF (Fin de archivo). Hemos utilizado EOF en nuestro programa para determinar el final del archivo.
Escritura en un archivo
Para escribir el archivo, debe abrir el archivo en un modo que admita escritura. Por ejemplo, si abre un archivo en modo «r», no podrá escribir el archivo ya que «r» es el modo de solo lectura que solo permite la lectura.
Ejemplo: Programa en C para escribir el archivo
Este programa le pide al usuario que ingrese un carácter y escribe ese carácter al final del archivo. Si el archivo no existe, este programa creará un archivo con el nombre especificado y escribirá el carácter de entrada en el archivo.
Cerrar un archivo
fclose(fp);
La función fclose () se usa para cerrar un archivo abierto. Como argumento, debe proporcionar un puntero al archivo que desea cerrar.
Un ejemplo para mostrar la operación Abrir, leer, escribir y cerrar en C
Cómo leer / escribir (E / S) Cadenas en archivos – fgets & fputs
Aquí discutiremos cómo leer y escribir cadenas en un archivo.
char *fgets(char *s, int rec_len, FILE *fpr)
s: Matriz de caracteres para almacenar cadenas.
rec_len: Longitud del registro de entrada.
fpr: Puntero al archivo de entrada.
Tomemos un ejemplo:
Ejemplo para leer las cadenas de un archivo en programación C
En el ejemplo anterior hemos usado la función fgets como esta:
fgets(str, 10, fpr)
Aquí str representa la cadena (matriz de caracteres) en la que está almacenando la cadena después de leerla del archivo.
10 es la longitud de la cadena que necesita ser leído cada vez.
fpr es el puntero al archivo, que se va a leer.
Por qué utilicé if (fgets (str, 10, fpr) == NULL como lógica para determinar el final del archivo?
En los ejemplos anteriores, hemos usado ch == EOF para conocer el final del archivo. Aquí hemos usado esta lógica porque fgets devuelve NULL cuando no hay más registros disponibles para leer .
Programa C – Escribiendo una cadena en un archivo
int fputs ( const char * s, FILE * fpw );
char *s
– Matriz de char.
FILE *fpw
– Puntero (de tipo FILE) al archivo que se va a escribir.
fputs toma dos argumentos –
fputs(str, fpw)
str – str representa la matriz, en la que se almacena la cadena.
fpw – FILE puntero al archivo de salida, en el que se debe escribir el registro.
Nota importante sobre fputs:
fputs por defecto no agrega una nueva línea después de escribir cada registro, para hacerlo manualmente, puede tener la siguiente declaración después de cada escritura en el archivo.
fputs("\n", fpw);
C FILE I / O para archivos binarios
Hasta ahora, hemos aprendido las operaciones de archivos en archivos de texto, ¿qué pasa si los archivos son binarios (como un archivo .exe)? Los programas anteriores no funcionarán para archivos binarios, sin embargo, hay un cambio menor en el manejo de archivos binarios. La principal diferencia es el nombre de archivo & modos. Entendamos esto con la ayuda de un ejemplo. Digamos que tengo dos archivos binarios bin1.exe & bin2.exe – Quiero copiar el contenido de bin1.exe a bin2.exe:
Ejemplo: Lectura y escritura de archivos binarios en C
Nota: Los modos de apertura de archivos son «rb» y «wb» en lugar de «r» & «w” ..