Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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:
void presentacion()
{
printf(" Archivos binarios: agregar datos.\n");
printf(" Creacion de un archivo binario llamado archivo3.dat y almacenar 3 enteros.\n");
printf(" Seguidamente cerrar el archivo.\n");
printf(" Abrir nuevamente el archivo pero en modo de anadir y almacenar 1 float. \n");
printf(" Creacion de un archivo binario llamado archivo3.dat y almacenar 3 enteros. \n");
printf(" Finalmente abrir el archivo para lectura y mostrar todos sus datos. \n");
printf(" Muestra 3 Funciones mas Presentacion, Separacion y Finalizacion\n");
printf("*******************************\n");
printf("\n");
}
void crear()
{
FILE *arch; //definimos puntero de tipo file
if (arch==NULL)
exit(1);
int valor1=10;
fwrite(&valor1, sizeof(int), 1, arch); //para grabar datos fwrite
int valor2=20;
fwrite(&valor2, sizeof(int), 1, arch); //para grabar datos fwrite
int valor3=30;
fwrite(&valor3, sizeof(int), 1, arch); //para grabar datos fwrite
void agregar()
{
FILE *arch; //definimos puntero de tipo file
if (arch==NULL)
exit(1);
void imprimir()
{
FILE *arch; //definimos puntero de tipo file
if (arch==NULL)
exit(1);
float f1;
void separacion()
{
printf("\n*******************************\n");
}
void finalizacion()
{
printf("\n*******************************\n");
printf(" Gracias por utilizar este programa");
}
int main()
{
presentacion();
separacion();
crear();
agregar();
imprimir();
separacion();
finalizacion();
getch();
return 0;
}
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)
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.
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);
}
ArchivosBinariosAgregarDatos2.c
#include<stdio.h> //aqui estan las funciones open, write y close
#include<conio.h>
#include<stdlib.h>
void presentacion()
{
printf(" Archivos binarios: agregar datos.\n");
printf(" Creacion de un archivo binario llamado archivo4.dat y almacenar 5 enteros.\n");
printf(" Seguidamente cerrar el archivo.\n");
printf(" Abrir nuevamente el archivo pero en modo de añadir y almacenar 3 float. \n");
printf(" Creacion de un archivo binario llamado archivo3.dat y almacenar 5 enteros. \n");
printf(" Finalmente abrir el archivo para lectura y mostrar todos sus datos. \n");
printf(" Muestra 3 Funciones mas Presentacion, Separacion y Finalizacion\n");
printf("*******************************\n");
printf("\n");
}
void crear()
{
FILE *arch; //definimos puntero de tipo file
if (arch==NULL)
exit(1);
int valor1=155;
fwrite(&valor1, sizeof(int), 1, arch); //para grabar datos fwrite
int valor2=255;
fwrite(&valor2, sizeof(int), 1, arch); //para grabar datos fwrite
int valor3=355;
fwrite(&valor3, sizeof(int), 1, arch); //para grabar datos fwrite
int valor4=455;
fwrite(&valor4, sizeof(int), 1, arch); //para grabar datos fwrite
int valor5=555;
fwrite(&valor5, sizeof(int), 1, arch); //para grabar datos fwrite
void agregar()
{
FILE *arch; //definimos puntero de tipo file
if (arch==NULL)
exit(1);
void imprimir()
{
FILE *arch; //definimos puntero de tipo file
if (arch==NULL)
exit(1);
int v1, v2, v3, v4, v5;
float f1;
float f2;
float f3;
void separacion()
{
printf("\n*******************************\n");
}
void finalizacion()
{
printf("\n*******************************\n");
printf(" Gracias por utilizar este programa");
}
int main()
{
presentacion();
separacion();
crear();
agregar();
imprimir();
separacion();
finalizacion();
getch();
return 0;
}
ArchivosBinariosAgregarDatos3.c
#include<stdio.h> //aqui estan las funciones open, write y close
#include<conio.h>
#include<stdlib.h>
void presentacion()
{
printf(" Archivos binarios: agregar datos.\n");
printf(" Creacion de un archivo binario llamado archivo5.dat.\n");
printf(" Pedimos ingresar 5 enteros y 3 floats.\n");
printf(" Seguidamente cerrar el archivo.\n");
printf(" Abrir nuevamente el archivo pero en modo de añadir y almacenar 2 float. \n");
printf(" Creacion de un archivo binario llamado archivo5.dat y almacenar todo. \n");
printf(" Utilizar el fseek y el SEEK_SET saltaremos 16 bytes e imprimiremos el entero. \n");
printf(" Utilizar el fseek y el SEEK_CUR saltaremos 8 bytes e imprimiremos el float. \n");
printf(" Utilizar el fseek y el SEEK_CUR saltaremos 4 bytes e imprimiremos el float. \n");
printf(" Finalmente abrir el archivo para lectura y mostrar todos sus datos. \n");
printf(" Muestra 3 Funciones mas Presentacion, Separacion y Finalizacion\n");
printf("*******************************\n");
printf("\n");
}
void cargar ()
{
int v1,v2,v3,v4,v5;
float f1,f2,f3;
printf("\n-------------------------------------------------------------------------\n");
printf(" Ingrese el primer entero: ");
scanf("%i",&v1);
printf("-------------------------------------------------------------------------\n");
if (arch==NULL)
exit(1);
void crear()
{
FILE *arch; //definimos puntero de tipo file
if (arch==NULL)
exit(1);
int v1,v2,v3,v4,v5;
float f1,f2,f3;
void agregar()
{
float fa1,fa2,fa3;
printf("*******************************\n");
printf(" Ingrese el primer float para agregar: ");
scanf("%f",&fa1);
printf("-------------------------------------------------------------------------\n");
FILE *arch;
if (arch==NULL)
exit(1);
fwrite(&fa1, sizeof(float), 1, arch); //y lo grabamos con datos fwrite
fwrite(&fa2, sizeof(float), 2, arch); //y lo grabamos con datos fwrite
void imprimir()
{
FILE *arch; //definimos puntero de tipo file
if (arch==NULL)
exit(1);
float f1;
float f2;
float f3;
float fa1;
float fa2;
void imprimirUno()
{
FILE *arch; //definimos puntero de tipo file
if (arch==NULL)
exit(1);
int v1,v2,v3,v4,v5;
float f1,f2,f3,fa1,fa2;
printf(" El puntero esta en el v5 con el SEEK_CUR apuntamos desde donde esta 8 bytes\n");
printf(" Al hacer saltar 8 bytes mostrara el tercer float que es: %0.2f\n",f1);
//para imprimir los datos
printf("*******************************\n");
fseek(arch, 4, SEEK_CUR); //SEEk_CUR comenzaremos contando desde donde esta tercer float
//saltamos los 1 floats que van primero 4bytes
printf(" El puntero esta en el tercer float con el SEEK_CUR apuntamos desde donde esta 4
bytes\n");
printf(" Al hacer saltar 4 bytes mostrara el segundo float agregado que es: %0.2f\n",f3);
//para imprimir los datos
printf("*******************************\n");
void separacion()
{
printf("\n*******************************\n");
}
void finalizacion()
{
printf("\n*******************************\n");
printf(" Gracias por utilizar este programa");
}
int main()
{
presentacion();
separacion();
cargar();
crear();
imprimir();
agregar();
imprimirUno();
separacion();
finalizacion();
getch();
return 0;
}