UNIDAD 6: REGISTROS Y ARCHIVOS DIRECTOS

TEMA LINUX GCC 3: GRABACION Y LECTURA DISCO

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

Prog29.html


<HTML>

<FORM ACTION="http://192.168.1.251/~tusitio/cgi-bin/prog29.cgi" METHOD=post>

CLAVE:<INPUT TYPE=text NAME=CLAVE><BR>

NOMBRE:<INPUT TYPE=text NAME=NOMBRE><BR>

EDAD:<INPUT TYPE=TEXT NAME=EDAD><BR>

<INPUT TYPE=submit VALUE=OK>

</FORM></HTML>

corrida:

image97.jpg

prog29.cpp


#include <string>

#include <iostream>

#include <lcnet.h>

using namespace std;

static struct {

int clave;

char nombre[30];

int edad;

} animalito;

int main() {

//cargando estructura

animalito.clave=getinteger("CLAVE");

// y se debe almacenar la string como un arreglo de chars de ahí la

// necesidad de un temporal

string temp =getstring("NOMBRE");

strcpy( animalito.nombre, temp.c_str() );

animalito.edad=getinteger("EDAD");

//abriendo, grabando, cerrando

FILE *archdisco;

archdisco = fopen("//home//tusitio//animalito.dat","at+");

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

fclose(archdisco);

//avisando usuario

cout << "Content-type: text/html\n\n";

cout << "<html>" << endl;

cout << animalito.clave <<" "<<animalito.nombre<<" "<<animalito.edad<<endl;

cout << "<br>" << "registro grabado" <<endl;

cout << "</html>" << endl;

}

image98.jpg

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

La primera observación es que se esta usando el “fopen()” en modo “at+” 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

Prog30.html


<HTML>

<FORM ACTION="http://192.168.1.251/~tusitio/cgi-bin/prog30.cgi" METHOD=post>

<INPUT TYPE=submit VALUE=LEER>

</FORM></HTML>

corrida:

image70.jpg

prog30.CPP


#include <string>

#include <iostream>

#include <lcnet.h>

using namespace std;

static struct {

int clave;

char nombre[30];

int edad;

} animalito;

int main()

{

cout << "Content-type: text/html\n\n";

cout << "<html>" << endl;

//abriendo, leyendo,cargando estructura

FILE *archdisco;

archdisco = 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,archdisco)==1)

{ // desplegando estructuras

cout << animalito.clave <<" "<<animalito.nombre<<" "<<animalito.edad<<endl;

cout << "<br>" <<endl;

}; // aqui termina while

// no olvidar cerrar archivo y siempre fuera de while

// tampoco olvidar cerrar la pagina

fclose(archdisco);

cout << "</html>" << endl;

return 0;

}

image99.jpg

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

TAREAS PROGRAMACION LINUX GCC PROGRAMACION LINUX GCC

1.- Cargar y Leer los archivos pedidos en el TEMA LINUX GCC anterior.

 




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