Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Urgente: Ayuda con programa de ficheros

Estas en el tema de Urgente: Ayuda con programa de ficheros en el foro de Visual Basic clásico en Foros del Web. hola, mirad estoy haciendo un ejercicio y me he quedado bloqueado, el ejercicio trata de eliminar una categoria(que es un elemento de una structura, y ...
  #1 (permalink)  
Antiguo 17/06/2010, 09:19
 
Fecha de Ingreso: junio-2010
Mensajes: 353
Antigüedad: 13 años, 10 meses
Puntos: 6
Urgente: Ayuda con programa de ficheros

hola, mirad estoy haciendo un ejercicio y me he quedado bloqueado, el ejercicio trata de eliminar una categoria(que es un elemento de una structura, y lo que hago es copiar todo en otro fichero menos eso que no quiero, después elimino original y renombro el fichero auxiliar, por eso hay 2 ficheros de categoria) y también en otra struc, modificiar otro elemente para dejarlo a 0(lo mismo por eso hay 2 para los productos):

strucs


typedef struct categoria{
char nomCat[20];
int codiCat;
};

typedef struct productes{
char nomProd[20];
int codiProd;
int codiCat1;
};

Función



void Eliminar_persona()
{
FILE *fA,*fB,*fC,*fE;
categoria Cat;
productes Prod;
int contador=0;
char nomCat[20];
if((fA=fopen("categoria.dat","rb"))==NULL) {
printf("Error al intentar obrir l'arxiu\n");
}
if((fC=fopen("productes.dat","rb"))==NULL) {
printf("Error al intentar obrir l'arxiu\n");
}
if((fE=fopen("productesAux.dat","wb"))==NULL){
printf("Error al intentar obrir l'arxiu\n");
}
if((fB=fopen("categoriaAux.dat","wb"))==NULL){
printf("Error al intentar obrir l'arxiu\n");
}
system("CLS");

printf("Introdueix el nom de la categoria que vols eliminar: \n");
scanf("%s",nomCat);
while (fread(&Cat,sizeof(categoria),1,fA))
{
printf("hola1");
int i;
i=strcmp(Cat.nomCat,nomCat);
if (i==0)
{
contador++;
break;
}
}
if(contador==0)
{
printf("\nAquesta categoria no consta a la base de dades\n");
fclose(fA);
printf("\n");
system("PAUSE");
system("CLS");
}
else
{
// Aquí entra
while (fread(&Cat,sizeof(categoria),1,fA))
{
//Aquí no entra :S
int i;
i=strcmp(Cat.nomCat,nomCat);
if (i!=0)// aqui se va gravando en el fichero auxiliar pero si son iguales(osea 0) no lo guarda,
{
fwrite(&Cat,sizeof(categoria),1,fB);
}
if(i==0){
while (fread(&Prod,sizeof(productes),1,fC)){
if(Prod.codiCat1==Cat.codiCat){// Se queda guardado de antes el
Prod.codiCat1=0;
fwrite(&Prod,sizeof(productes),1,fE);
}
}
}
}
remove("categoria.dat");
rename("categoriaAux.dat","categoria.dat");
remove("productes.dat");
rename("productesAux.dat","productes.dat");
fclose(fA);
fclose(fB);
fclose(fC);
fclose(fE);
}
printf("\n");
system("PAUSE");
system("CLS");
}

Creo que el sistema esta bien, pero lo que no encuentro es el error, en el penultimo while no me entra y no se prk >,<, lo demas esta correcto y con 2 fichero si que me va

ME EQUIVOQUE DE FORO XD, BORRAD PLZ

Última edición por marcwolf; 17/06/2010 a las 09:46 Razón: Fail foro
  #2 (permalink)  
Antiguo 21/06/2010, 13:26
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Urgente: Ayuda con programa de ficheros

te quivocaste?.. lo solucionaste?

Etiquetas: ficheros, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:30.