/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

ayuda eliminar y actualizar

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
crissepul



Registrado: 10 Abr 2007
Mensajes: 14
Ubicación: la granja

MensajePublicado: 12/09/2007 12:45 pm
Título: ayuda eliminar y actualizar

hola estoy haciendo un programa donde uno inserta palabras a un txt las elimina y actualiaza, todo esto en el lenguaje C
cuado lo compilo en dev c me arroja algunas advertencias pero = me corre....en el ingresar no tengo problemas...en el actualizar si xq cuando ingreso una palabra y la quiero actualizar no la reconoce...pero por ejemplo si le ingreso una palabra y despues otra y quiero actualizar la segunda lo hace sin problemas.....y quisiera pedir ayuda con el eliminar pienso hacerlo parecido al actualizar q la compare y cuando sean iguales la elimine..pero no tengo idea cual es el comando para eliminar
de antemano muchas gracias

Código:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define largo_n 25
#define largo_total 30

typedef  struct
{
   char caracteres[largo_n];
   struct palabra *sig;
} palabra;
palabra *head_pal;

void guardar_palabra(char pala[largo_n]);
void leer_palabra(char c[largo_total]);
void libera_palabra();
void ingresar_palabra();
void eliminar_palabra();
void Menu ();
int texto(char w[largo_total]);
char* texto_e(char w[largo_total]);

main()
{
   int opcion;
    printf("\nMENU PRINCIPAL");
   do{
      printf("\n\n .1 Agregar palabra");
      printf("\n .2 Eliminar palabra");
      printf("\n .3 Salir");
      printf("\n\nIngrese su opcion: ");
      scanf("%d", &opcion);
      switch(opcion)
        {
               case 1:
               libera_palabra();
               ingresar_palabra();
               break;
               case 2:
              eliminar_palabra();
               break;
        }
       
         if (opcion == 3)
             printf("\nUsted ha salido del sistema\n\n");
        if (opcion < 1 || opcion > 3)
            {
           printf ("\nOpcion incorrecta... vuelva a intentarlo");
          }
       }
                while(opcion != 3);
}


void leer_palabra(char c[largo_total])
{
   char caracteres[largo_n];
   char c_aux[50]; strcpy(c_aux,c);

int n;
int i;

n = texto(c);     
for(i=0;i<n;i++){ caracteres[i]=c[i];}
for(i=n;i<2*n;i++){ caracteres[i]=NULL;}
strcpy(c,texto_e(c));
guardar_palabra(caracteres);
}

int texto(char w[largo_total])
{
   int i;
   char w_aux[largo_n];
    i=0;
    while(w[i]!=NULL)
    {
       w_aux[i] = w[i];
       i++;
    }
    return i;
}
char* texto_e(char w[largo_total])
{
   int i;
   int j;
   int z;
   i=0;
   char w_aux[largo_total];
    while(w[i]!=',')
    {
       i++;
    }
    i++;
    z=i;
    for(j=0;j<largo_total-i;j++)
    {
       w_aux[j] = w[i];
       i++;
    }
    return w_aux;
}


void guardar_palabra (char pala[largo_n])
  {   
     palabra *nueva_pal;
     nueva_pal = (palabra *)malloc(sizeof(palabra));
     
     if(head_pal==NULL)
     {
      nueva_pal->sig = NULL;
      strcpy(nueva_pal->caracteres,pala);
      head_pal = nueva_pal;
     }
     else
     {
      palabra *aux;
      aux = head_pal;
     
          while(aux->sig!=NULL)
          {
          aux=aux->sig;
          }
          strcpy(nueva_pal->caracteres,pala);
          nueva_pal->sig = NULL;
          aux->sig = nueva_pal;
      }
  }
 
void ingresar_palabra()
{
   char caracteres[largo_n];

   FILE *_f;
   char cadena[largo_total];
   _f = fopen("dictionary.txt","rt");
   if(_f==NULL){printf("error en el archivo");}
   while(fgets(cadena,largo_total,_f)!=NULL)
   {
     leer_palabra(cadena);
   }
   fclose(_f);
   printf("Escriba la palabra que desea ingresar:" );            gets(caracteres);gets(caracteres);
   guardar_palabra(caracteres);

   FILE *f_;

   f_ = fopen("dictionary.txt","wt");
   if(f_==NULL) printf("error en el archivo");
   
   palabra *aux;
   aux = head_pal;
     
     while(aux!=NULL)
     {
     fputs((aux->caracteres),f_);

     aux = aux->sig;
   }
   fclose(f_);
}
   
void libera_palabra()
{
   palabra *aux_head_pal;
   aux_head_pal = head_pal;
   if(head_pal!=NULL)
   {
      while(head_pal->sig!=NULL)
      {
           head_pal = head_pal->sig;
           free(aux_head_pal);
           aux_head_pal = head_pal;
      }
      head_pal=NULL;
      free(head_pal);
   }
}
void eliminar_palabra(){
       
   char caracteres[largo_n];
   char r[largo_n];
   struct palabra *sig;
   printf("palabra: "); gets(r);gets(r);
   FILE *f;
   char cadena[largo_total];
   f = fopen("dictionary.txt","rt");
   if(f==NULL){printf("error en el archivo");}
   while(fgets(cadena,largo_total,f)!=NULL){
      leer_palabra(cadena);
   }
   fclose(f);

   palabra *aux;
   aux = head_pal;
   int i=0;
   char caracteres_a_comparar[largo_n];
   
   while(aux!=NULL){
      strcpy(caracteres_a_comparar,aux->caracteres);
      if(strcmp(r,caracteres_a_comparar)==0){
         i++;
      }
      aux = aux->sig;
   }

   aux = head_pal;

   if(i==1){
      printf("caracteres: ");                   gets(caracteres);//gets(n);
     
      FILE *f_;
      f_ = fopen("dictionary.txt","wt");
      if(f_==NULL) printf("error en el archivo");
         while(aux!=NULL){
           strcpy(caracteres_a_comparar,aux->caracteres);
           if(strcmp(r,caracteres_a_comparar)==0){
              fputs(strcat(caracteres," " ),f_);
             
               }
           else{
              fputs(strcat(aux->caracteres," " ),f_);
           
           
           }
           aux = aux->sig;
      }
   fclose(f_);
   }
   else{printf("\npalabra no existe");}
}               
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com