UNIDAD 6: C++ REGISTROS Y ARCHIVOS DIRECTOS

TEMA 3: GRABACION Y LECTURA ARCHIVOS DISCO C++


Como ya se menciono grabar y lectura de registros o estructuras a renglones o registros de archivos en disco.

Estos dos procesos son los casos mas comunes y frecuentes que se pueden realizar con un archivo de disco.

GRABACION DE UNA ESTRUCTURA A UN ARCHIVO EN DISCO

prog26.cpp

#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int clave;
char nombre[30];
int edad;} animalito;
void main() {
clrscr();
// captura de campos
printf("dame clave :");scanf("%d",&animalito.clave);getchar();
printf("dame nombre :");gets(animalito.nombre);
printf("dame edad :");scanf("%d",&animalito.edad);
// grabando a disco
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\archivo1.dat","ab+");
fwrite(&animalito,sizeof(animalito),1,archdisco);
fclose(archdisco);
//avisando usuario
printf("animalito insertado");
getchar();getchar();
}

CORRIDA:

image221.jpg

Observar que es completamente similar aL programa de archivos secuenciales, solo se recomienda y exije que las claves sigan la secuencia 0,1,2,3,4,5…..

Otra observación es que se esta usando el “fopen()” en modo “ab+” en lugar de modo “w” pero es para matar dos pajaros de un tiro, reestudiar la clase de modos de apertura.

La instrución de grabación es:

fwrite(&animalito,sizeof(animalito),1,archdisco);

que ya se estudio anteriormente.

LECTURA CONSULTA DESPLIEGUE DE REGISTROS

Prog27.CPP

#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int clave;
char nombre[30];
int edad;} animalito;
void main() {
clrscr();
// leyendo disco
FILE *archdisco;
archdisco = fopen("cpp:\\ac\\archivo1.dat","rb+");
// aqui siempre debe empezar el ciclo de lectura
// y fread() regresa siempre cuantas estructuras leyo
while(fread(&animalito,sizeof(animalito),1,archdisco)==1)
{
// desplegando estructuras
printf("%d ",animalito.clave);
printf("%s ",animalito.nombre);
printf("%d ",animalito.edad);
printf("\n");
}; // aqui termina while
// no olvidar cerrar archivo y siempre fuera de while
fclose(archdisco);
getchar();getchar();
}

CORRIDA:

image222.jpg

Seria bueno que el despliegue fuese en una tabla pero esto queda de tarea.

TAREAS PROGRAMAS EN C++

1.- Cargar y Leer los archivos pedidos en el tema anterior.

Politica de Privacidad