UNIDAD 6:C++ REGISTROS Y ARCHIVOS DIRECTOS
TEMA 7: OPERACIONES CON CAMPOS C++
En este tema se analiza la manera de poder realizar operaciones o procesos con los campos de los registros en el archivo DIRECTO, lo unico importante a considerar es que los campos del registro son en cierta medida igual que variables normales y por tanto se pueden procesar de manera normal como lo muestra el ejemplo.
prog30.cpp
#include <stdio.h>
#include <io.h>
#include <conio.h>
#include <string.h>
struct {
int clave;
char nombre[30];
int edad;} animalito;
void main() {
clrscr();
FILE *arch1;
long r=0;
arch1 = fopen("cpp:\\ac\\archivo1.dat","rb+");
while (fread(&animalito,sizeof(animalito),1,arch1)==1)
{
// sumando 100 a edad
animalito.edad = animalito.edad + 100 ;
// como ya se leyo se regresa el apuntador al principio del registro
fseek(arch1,r*sizeof(animalito),0 );
// y se escribe el registro modificado al archivo
fwrite(&animalito,sizeof(animalito),1,arch1);
r=r+1;
//turboc no permite i/o archivos sin un rewind, fseek, etc
fseek(arch1,r*sizeof(animalito),0);
}; // aqui termina for
//cerrando archivo
fclose(arch1);
//avisando
puts("EDADES + 100");
getchar();getchar();
}
corrida prog27:
corrida prog30
corrida prog27
como se observa la solución es muy sencilla solo se ocupa:
1.- leer fread() el registro, esto mueve el apuntador al siguiente registro.
2.- modificar registro
3.- regresar a posición anterior con fseek()
4.- grabar fwrite() el registro corregido
5.- volver a usar un fseek() porque turboc no acepta i/o sin rewind, fseek, etc ver ayuda del compilador
y no se ocupan los dos archivos como en el caso secuencial.
TAREAS PROGRAMACION C++
CONSTRUIRLES PROGRAMAS QUE PROCESEN ALGUNOS CAMPOS DE LOS ARCHIVOS C++ EJEMPLOS QUE YA TIENEN CONSTRUIDOS.