Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Metodo Borrar de un Fichero txt

Estas en el tema de Metodo Borrar de un Fichero txt en el foro de C/C++ en Foros del Web. como hago para borrar un registro de un fichero txt? segun yo con este codigo que hice deberia funcionar, no se cual es mi error ...
  #1 (permalink)  
Antiguo 16/11/2012, 00:55
 
Fecha de Ingreso: noviembre-2012
Mensajes: 19
Antigüedad: 11 años, 5 meses
Puntos: 0
Metodo Borrar de un Fichero txt

como hago para borrar un registro de un fichero txt?

segun yo con este codigo que hice deberia funcionar, no se cual es mi error
Código C:
Ver original
  1. void Borrar(void){
  2.     FILE *fp,*fd;
  3.    Datos    aux;
  4.    int encontrado=0;
  5.     char cadena[25];
  6.  
  7.    printf("Introduce el nombre del Articulo a borrar: ");
  8.    gets(cadena);
  9.    fp=abrir_fichero_b(factura,0);
  10.    if(!(fp)){
  11.     printf("\n Error de apuertura del archivo factura.txt \n");}
  12.     else{
  13.                fd=abrir_fichero_b("auxiliar.$$$",1);
  14.                if(!(fd)){
  15.          printf("\n Error Imposible crear archivo auxiliar.$$$ \n");}
  16.          else{
  17.               while ((fread(&aux, sizeof(aux), 1, fp))!=0)
  18.             if(stricmp(aux.nomart1,cadena)!=0)
  19.               fwrite(&aux, sizeof(aux), 1, fd);
  20.               else if(stricmp(aux.nomart2,cadena)!=0)
  21.               fwrite(&aux, sizeof(aux), 1, fd);
  22.               else if(stricmp(aux.nomart3,cadena)!=0)
  23.               fwrite(&aux, sizeof(aux), 1, fd);
  24.               else if(stricmp(aux.nomart4,cadena)!=0)
  25.               fwrite(&aux, sizeof(aux), 1, fd);
  26.               else if(stricmp(aux.nomart5,cadena)!=0)
  27.               fwrite(&aux, sizeof(aux), 1, fd);
  28.                else if(stricmp(aux.nomart6,cadena)!=0)
  29.               fwrite(&aux, sizeof(aux), 1, fd);
  30.                else if(stricmp(aux.nomart7,cadena)!=0)
  31.               fwrite(&aux, sizeof(aux), 1, fd);
  32.                else if(stricmp(aux.nomart8,cadena)!=0)
  33.               fwrite(&aux, sizeof(aux), 1, fd);
  34.                else if(stricmp(aux.nomart9,cadena)!=0)
  35.               fwrite(&aux, sizeof(aux), 1, fd);
  36.                else if(stricmp(aux.nomart10,cadena)!=0)
  37.               fwrite(&aux, sizeof(aux), 1, fd);
  38.            
  39.             else
  40.               encontrado=1;
  41.          fclose(fd);
  42.               }
  43.           fclose(fp);
  44.       if(encontrado){
  45.          system("del factura.txt");
  46.          system("ren auxiliar.$$$ factura.txt");
  47.          printf("\n Articulo borrado con exito \n");
  48.       }
  49.       else{
  50.          system("del auxiliar.$$$");
  51.          printf("\n El articulo NO SE ENCONTRO, por lo tanto no fue borrado!!!");
  52.       }
  53.                }
  54. }
  #2 (permalink)  
Antiguo 16/11/2012, 22:24
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Metodo Borrar de un Fichero txt

Hola! para poder ayudarte mejor tendrias que subir mas codigo, en especial como esta compuesto "Datos" (y detallar un poco mas el error)

Un error que veo es la condicion del while, deberia ser:
Código C:
Ver original
  1. while ((fread(&aux, sizeof(aux), 1, fp))==1)
fread devuelve, en este caso, un numero menor a 1 en caso de error o si se llego al fin del fichero

Etiquetas: fichero, funcion, int, metodo, txt
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 19:25.