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.

 




Google
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
Politica de Privacidad