Hemos visto que cuando necesitamos crear un archivo lo hacemos pasando a la funciĆ³n fopen el valor "wb". Con esto indicamos que se cree el archivo y si ya existe lo borre y lo cree nuevamente vacĆo.
En muchas situaciones podemos necesitar agregar datos al archivo sin tenerlo que borrar, para esto debemos pasar a la funciĆ³n fopen el valor "ab" (append binary)
Problema 1:
Confeccionar un programa con tres funciones:
1 - CreaciĆ³n de un archivo binario llamado "archivo3.dat" y almacenar 3 enteros. Seguidamente cerrar el archivo
2 - Abrir nuevamente el archivo pero en modo de aƱadir y almacenar 1 float.
3 - Finalmente abrir el archivo para lectura y mostrar todos sus datos.
Archivo: programa223.c
La primer funciĆ³n que se llama desde la main es crear:
void crear() { FILE *arch; arch=fopen("archivo3.dat","wb"); if (arch==NULL) exit(1); int valor1=10; fwrite(&valor1, sizeof(int), 1, arch); int valor2=20; fwrite(&valor2, sizeof(int), 1, arch); int valor3=30; fwrite(&valor3, sizeof(int), 1, arch); fclose(arch); }
En esta funciĆ³n se crea un archivo binario llamado "archivo3.dat" si ya existe se vuelve a crear porque pasamos "wb" (write binary)
Se graban tres valores enteros.
La segunda funciĆ³n llamada "agregar" es donde aparece lo nuevo donde procedemos a la apertura del archivo para aƱadir datos "ab" (append binary):
void agregar() { FILE *arch; arch=fopen("archivo3.dat","ab"); if (arch==NULL) exit(1); float f1=5.45; fwrite(&f1, sizeof(float), 1, arch); fclose(arch); }
Cuando se abre para aƱadir el puntero de archivo apunta al final donde procedemos a grabar en este caso un valor float. Es decir ahora nuestro archivo almacena 4 datos: 3 enteros y un float.
El algoritmo de impresiĆ³n es similar a lo visto en conceptos anteriores:
void imprimir()
{
FILE *arch;
arch=fopen("archivo3.dat","rb");
if (arch==NULL)
exit(1);
int v1, v2, v3;
fread(&v1, sizeof(int), 1, arch);
printf("entero: %i\n",v1);
fread(&v2, sizeof(int), 1, arch);
printf("entero: %i\n",v2);
fread(&v3, sizeof(int), 1, arch);
printf("entero: %i\n",v3);
float f1;
fread(&f1, sizeof(float), 1, arch);
printf("float: %0.2f\n",f1);
fclose(arch);
}
No hay comentarios:
Publicar un comentario