/* Ordena un fichero de pedidos utilizando un tabla indice */ #include #include #include typedef struct{ char cod_cli [7]; char cod_art[7]; char fecha [9]; short unidades; //si unidades = 0 el registro esta borrado y no se debe ordenar }TipoPedido; typedef struct { char clave [7]; long posicion; } ElementoIdx; // Guardo la clave y la posición del registro ElementoIdx tablaindex[1000]; // Tabla Indice TipoPedido reg; FILE *pped; FILE *pord; int numreg=0; int AbrirFicheros() { pped=fopen("PEDIDOS.DAT","r"); pord=fopen ("PEDORD.DAT","w"); if ((pped==NULL)||(pord==NULL)) { return (0); } return 1; } void CargarTabla( void ) { int i=0; fread(®,sizeof(TipoPedido),1,pped); while (!feof(pped)) { if (reg.unidades!=0) { strcpy(tablaindex[i].clave,reg.cod_cli); // - sizeof(reg) porque he leido ya el registro tablaindex[i].posicion = ftell(pped) - sizeof (reg); i++; } fread(®,sizeof(TipoPedido),1,pped); } numreg = i; } void OrdenarTabla ( void ) { int i,j; ElementoIdx indaux; for (i=0;i0) { indaux=tablaindex[j]; tablaindex[j]=tablaindex[j+1]; tablaindex[j+1]=indaux; } } } } void VolcarTabla( void ) { int i; for (i=0;i