Problemas con operaciones en archivos
Tengo problemas al tratar de ordenar la informacion dentro de un texto, lo he checado y parece correcto pero solo saca simbolos incoherentes:
FILE * Abrir_Cerrar(FILE *archivo, int modo, int tipo=0)
{
switch(modo)
{
case 0://Cerrar archivo
fclose(archivo);
break;
case 1://Abrir archivo
archivo=fopen(Archivo,"r+");
if(archivo!=NULL)
{
fclose(archivo);
if(!tipo)
archivo=fopen(Archivo,"ab+");
else
archivo=fopen(Archivo,"a+");
}
else
{
Error(2);
archivo=fopen(Archivo,"w+");
}
break;
}
return(archivo);
}
void Ordenar(void)
{
struct Definicion terminos[MaxPalabras],aux[1];
FILE *Diccionarios;
Diccionarios=Abrir_Cerrar(Diccionarios,1,0);
int cont=0,mover=sizeof(struct Definicion);
while(!feof(Diccionarios) && cont<MaxPalabras)//guardo todo el archivo en terminos
{
cont++;
fread(&terminos[cont],mover*cont,1,Diccionarios);
}
Diccionarios=Abrir_Cerrar(Diccionarios,0);
for(int a=0;a<cont;a++)
{
for(int b=0;b<cont;b++)
{
if((strcmp(terminos[a].Catalano,terminos[b].Catalano))>0)// de A - Z
{
strcpy(aux[0].Catalano,terminos[a].Catalano);
strcpy(aux[0].Ingles,terminos[a].Ingles);
strcpy(terminos[a].Catalano,terminos[a+1].Catalano);
strcpy(terminos[a].Ingles,terminos[a+1].Ingles);
strcpy(terminos[a+1].Catalano,aux[0].Catalano);
strcpy(terminos[a+1].Ingles,aux[0].Ingles);
}
}
}
int escritura;
Diccionarios=fopen(Archivo,"w+");
for(a=0;a<cont;a++)
{
escritura=fwrite(&terminos,mover*a,1,Diccionarios);
if(escritura!=1)
{
Error(3);
break;
}
}
if(a==cont)
printf("nn El archivo ha sido ordenado de forma correcta!!");
else
printf("nn El archivo no pudo ser ordenado");
Diccionarios=Abrir_Cerrar(Diccionarios,0);
}
El codigo esta aqui si me dicen que podra ser podre arreglar las demás funciones, ya que también tengo problemas de esta indole al tratar de eliminar o leer el 3 dato almacenado en el archivo.
Jamas he podido leer el 3 registro dentro del archivo porque?
FILE * Abrir_Cerrar(FILE *archivo, int modo, int tipo=0)
{
switch(modo)
{
case 0://Cerrar archivo
fclose(archivo);
break;
case 1://Abrir archivo
archivo=fopen(Archivo,"r+");
if(archivo!=NULL)
{
fclose(archivo);
if(!tipo)
archivo=fopen(Archivo,"ab+");
else
archivo=fopen(Archivo,"a+");
}
else
{
Error(2);
archivo=fopen(Archivo,"w+");
}
break;
}
return(archivo);
}
void Ordenar(void)
{
struct Definicion terminos[MaxPalabras],aux[1];
FILE *Diccionarios;
Diccionarios=Abrir_Cerrar(Diccionarios,1,0);
int cont=0,mover=sizeof(struct Definicion);
while(!feof(Diccionarios) && cont<MaxPalabras)//guardo todo el archivo en terminos
{
cont++;
fread(&terminos[cont],mover*cont,1,Diccionarios);
}
Diccionarios=Abrir_Cerrar(Diccionarios,0);
for(int a=0;a<cont;a++)
{
for(int b=0;b<cont;b++)
{
if((strcmp(terminos[a].Catalano,terminos[b].Catalano))>0)// de A - Z
{
strcpy(aux[0].Catalano,terminos[a].Catalano);
strcpy(aux[0].Ingles,terminos[a].Ingles);
strcpy(terminos[a].Catalano,terminos[a+1].Catalano);
strcpy(terminos[a].Ingles,terminos[a+1].Ingles);
strcpy(terminos[a+1].Catalano,aux[0].Catalano);
strcpy(terminos[a+1].Ingles,aux[0].Ingles);
}
}
}
int escritura;
Diccionarios=fopen(Archivo,"w+");
for(a=0;a<cont;a++)
{
escritura=fwrite(&terminos,mover*a,1,Diccionarios);
if(escritura!=1)
{
Error(3);
break;
}
}
if(a==cont)
printf("nn El archivo ha sido ordenado de forma correcta!!");
else
printf("nn El archivo no pudo ser ordenado");
Diccionarios=Abrir_Cerrar(Diccionarios,0);
}
El codigo esta aqui si me dicen que podra ser podre arreglar las demás funciones, ya que también tengo problemas de esta indole al tratar de eliminar o leer el 3 dato almacenado en el archivo.
Jamas he podido leer el 3 registro dentro del archivo porque?
