From 44e29ffea53b9da70e6b5e16f96aa0231540dd87 Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Wed, 31 Mar 2004 20:50:21 +0000 Subject: [PATCH] =?utf8?q?=20*=20Algunos=20cambios.=20=20=20=20Saco=20cosa?= =?utf8?q?s=20que=20no=20deben=20ir.=20El=20tipo=20de=20archivo=20nunca=20?= =?utf8?q?sabe=20que=20dato=20=09=20esta=20trabajando.=20Solo=20debe=20sab?= =?utf8?q?er=20el=20tama=C3=B1o=20de=20un=20registro=20y=20hacer=20=09=20u?= =?utf8?q?na=20copia=20bit=20a=20bit=20del=20registro=20sobre=20un=20punte?= =?utf8?q?ro=20que=20se=20le=20pasa.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit ver funcion memcpy y memncpy --- tipo3/main.c | 1 + tipo3/param_cte.c | 34 +++++++++++----------------------- tipo3/param_cte.h | 16 ---------------- 3 files changed, 12 insertions(+), 39 deletions(-) diff --git a/tipo3/main.c b/tipo3/main.c index f6ab0bd..40418e4 100644 --- a/tipo3/main.c +++ b/tipo3/main.c @@ -16,4 +16,5 @@ ID_aux = (d << 0 ) | (c << 8) | ( b << 16) | (a << 24); printf("el numero es = %x\n", ID_aux); + return 0; } diff --git a/tipo3/param_cte.c b/tipo3/param_cte.c index 9a05adb..896d72a 100644 --- a/tipo3/param_cte.c +++ b/tipo3/param_cte.c @@ -9,10 +9,9 @@ FILE* reg_exist; /** Leo un registro del archivo, devuelve cero si no lo encuentra.**/ int leer_registro(int ID, void *str, unsigned long tam) { - struct param_cte_t dato; char* bloque = (char*)malloc(tam); char ID_char[4]; - int block, i, ID_aux, a, b, c, d; + int block, i, ID_aux, a, b, c, d, tamanio_registro; int iterador = 0; /* tengo que crear los archivos de indice antes de usarlos!!!!!!!!!*/ if ( (block_reg = fopen("block_reg.dat","a+")) == NULL ) @@ -31,17 +30,24 @@ int leer_registro(int ID, void *str, unsigned long tam) if (leer_bloque(block,bloque,tam)==-1) return -1; /*No se pudo leer el bloque*/ - while ( iterador != (tam/sizeof(dato)) ){ + while ( iterador != (tam/tamanio_registro) ){ a = bloque[0+iterador]; b = bloque[1+iterador]; c = bloque[2+iterador]; d = bloque[3+iterador]; ID_aux = (d << 0 ) | (c << 8) | ( b << 16) | (a << 24); if ( ID_aux == ID ){ - copiar(dato, (param_cte_t**)&str); + /* TODO : la copia es byte a byte. Al archivo + * no le importa que tipo de estructura es + */ + //copiar(dato, &str); break; } - iterador += sizeof(dato); + // FIXME : El tamaño del registro es lo que debo tener + // aca, no el tamaño del tipo de dato. + // + // Cuando se crea el archivo se le da el tamaño de un registro + //iterador += sizeof(dato); } fclose(block_reg); fclose(block_free); @@ -88,24 +94,6 @@ int buscar_registro(int ID) return -1; } -int copiar(struct param_cte_t dato, param_cte_t** str) -{ - if ((*str) == NULL) return 0; - (*str)->ID == dato.ID; - strcpy((*str)->num_fac,dato.num_fac); - strcpy((*str)->fecha_emision,dato.fecha_emision); - strcpy((*str)->fecha_vto,dato.fecha_vto); - strcpy((*str)->num_fac,dato.num_fac); - strcpy((*str)->num_remito,dato.num_remito); - strcpy((*str)->estado,dato.estado); - strcpy((*str)->FP,dato.FP); - strcpy((*str)->Por_DoI,dato.Por_DoI); - strcpy((*str)->num_cta_cte,dato.num_cta_cte); - strcpy((*str)->num_cheque,dato.num_cheque); - (*str)->texto = dato.texto; - return 1; -} - int leer_bloque(int ID, void* str, unsigned long tam) { diff --git a/tipo3/param_cte.h b/tipo3/param_cte.h index b9bcba2..136b8ec 100644 --- a/tipo3/param_cte.h +++ b/tipo3/param_cte.h @@ -5,21 +5,6 @@ #include #include "interface.h" -typedef struct param_cte_t { - int ID; - char num_fac[9]; - char fecha_emision[9]; - char fecha_vto[9]; - char num_remito[9]; - char estado[2]; - char FP[2]; - char Por_DoI[6]; - char num_cta_cte[6]; - char num_cheque[19]; - int texto; /*referencia al texto en otro archivo.*/ -}; - - int leer_bloque(int ID, void *, unsigned long tam); int leer_registro(int ID, void *, unsigned long tam); @@ -30,5 +15,4 @@ int existe_registro(int ID); int buscar_registro(int ID); -int copiar(struct param_cte_t dato, param_cte_t** str); #endif -- 2.43.0