UNIDAD 6: REGISTROS Y ARCHIVOS DIRECTOS

TEMA LINUX GCC 7: OPERACIONES CON CAMPOS

En este TEMA LINUX GCC se analiza la manera de poder realizar operaciones o procesos con los campos de los registros en el archivo secuencial, lo unico importante a considerar es que los campos del registro son en cierta medida igual que variables normales y por tanto se pueden proceesar de manera normal como lo muestra el ejemplo.

Prog33.html

<HTML>
<FORM ACTION="http://192.168.1.251/~tusitio/cgi-bin/prog33.cgi" METHOD=post>
<INPUT TYPE=submit VALUE=SUMAR + 1000>
</FORM></HTML>

prog33.cpp

#include <string>
#include <iostream>
#include <lcnet.h>
using namespace std;
static struct {
int clave;
char nombre[30];
int edad;
} animalito;
int main() {
FILE *arch1;
arch1 = fopen("//home//tusitio//animalito.dat","r+");
// aqui siempre debe empezar el ciclo de lectura
// y fread() regresa siempre cuantas estructuras leyo
while(fread(&animalito,sizeof(animalito),1,arch1)==1)
{
// sumando 100 a edad
animalito.edad = animalito.edad + 100 ;
// como se leyo se regresa el apuntador al principio del registro
fseek(arch1, (long)(animalito.clave)* sizeof(animalito), 0 );
// y se escribe el registro modificado al archivo
fwrite(&animalito,sizeof(animalito),1,arch1);
}; // aqui termina while
//cerrando archivo
fclose(arch1);
//avisando
cout << "Content-type: text/html\n\n";
cout << "<html>" << endl;
cout << " ya se sumaron 100 a edad animalitos "<<endl;
cout << "</html>" << endl;
return 0;
}

corrida:

image103.jpg

corrida prog30

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

y no se ocupan los dos archivos como en el caso secuencial.

TAREAS PROGRAMACION LINUX GCC PROGRAMACION LINUX GCC :

CONSTRUIRLES PROGRAMAS QUE PROCESEN ALGUNOS CAMPOS DE LOS ARCHIVOS EJEMPLOS QUE YA TIENEN CONSTRUIDOS.

Politica de Privacidad