/*si existe, lo busco en el archivo de bloques*/
block = buscar_registro(emu,ID); /*me devuelve el nro de bloque al que pertenece el registro*/
bloque = (char*)malloc(emu->tam_bloque);
+ printf("Bloque de ID=%d es %d\n", ID, block);
if (bloque == NULL) {
printf("No hay memoria.\n");
return -1;
}
printf("el bloque leido es: %s\n",bloque+sizeof(int));
- while ( iterador < emu->tam_bloque ){
+ ID_aux = -1;
+ iterador = 0;
+ while ( iterador < emu->tam_bloque ) {
memcpy(&ID_aux, bloque+iterador, sizeof(int));
- printf("ID_aux = %d\n",ID_aux);
+ printf("ID_aux = %d ... buscando %d\n",ID_aux, ID);
iterador += sizeof(int);
+ printf("Buffer = (%s)\n", bloque+iterador);
if ( ID_aux == ID ){
memcpy(ptr,bloque+iterador,tam_reg);
break;
}
iterador += tam_reg;
}
- printf("reg leido = %s\n",(char*)ptr);
+ if (ID_aux == ID) {
+ printf("reg leido = %s\n",(char*)ptr);
+ } else {
+ printf("ALGO PASO Y NO PUDE LEER EL REGISTRO!!\n");
+ }
fclose(f_block_reg);
free(bloque);
/*grabo el registro en el bloque*/
memcpy(bloque+sizeof(int),ptr,tam);
/* me paro al final del archivo */
- fseek(file, 0, SEEK_END);
+ fseek(file, 0, SEEK_END);
/* grabo el bloque en el final del archivo */
fwrite(bloque,emu->tam_bloque,1,file);
/*actualizo el archivo de espacios libres*/