elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  LLenar arreglo con un archivo txt
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: LLenar arreglo con un archivo txt  (Leído 14,430 veces)
Angel774

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: LLenar arreglo con un archivo txt
« Respuesta #10 en: 7 Junio 2016, 05:02 am »

Muchas gracias amigo, si es asi pero al cerrar el ejecutable el archivo aparece con caracteres extraños


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: LLenar arreglo con un archivo txt
« Respuesta #11 en: 7 Junio 2016, 05:17 am »

¿Como estas guardado los datos?

Tu funcion:
Código
  1. void agenda::guardar_contacto()
  2. {
  3.    FILE *arch;
  4.  
  5.    arch=fopen("agenda.txt","r");
  6.  
  7.    fclose(arch);
  8.  
  9. }

No hace nada solo abre y cierra el archivo.

Saluds


En línea

Angel774

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: LLenar arreglo con un archivo txt
« Respuesta #12 en: 7 Junio 2016, 05:18 am »

Ya la modifique ahora esta asi
Código:
void agenda::guardar_contacto()
{
    FILE *arch;

    arch=fopen("agenda.txt","w");
    fprintf(arch,"%s",lista[cont].nombre);
    fprintf(arch,"%s",lista[cont].direccion);
    fprintf(arch,"%i",lista[cont].numero);
    fclose(arch);

}
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: LLenar arreglo con un archivo txt
« Respuesta #13 en: 7 Junio 2016, 05:29 am »

Ese "cont" no esta iniciaizado aun, esa sección de memoria tiene pura basura....

NEcesitas solo guardar los contactos del 0 al cont-1 de hecho en tu instrucccion solo guardas 1 contacto no inicializado..

Cambia tu codigo por:

Código
  1. void agenda::guardar_contacto()
  2. {
  3. FILE *arch;
  4. int i = 0;
  5. arch=fopen("agenda.txt","w");
  6. while(i < cont) {
  7. fprintf(arch,"%s",lista[i].nombre);
  8. fprintf(arch,"%s",lista[i].direccion);
  9. fprintf(arch,"%i",lista[i].numero);
  10. i++;
  11. }
  12. fclose(arch);
  13. }

Saludos!!
En línea

Angel774

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: LLenar arreglo con un archivo txt
« Respuesta #14 en: 7 Junio 2016, 05:33 am »

Muchas gracias bro!! ¿Como seria la de eliminar contacto?
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: LLenar arreglo con un archivo txt
« Respuesta #15 en: 7 Junio 2016, 05:42 am »

Jajajaja

COn tu sistema actual de datos la lista de 60 contactos es algo tedioso.

Primero tienes que localizar el contacto a eliminar ya sea por nombre o numero...

Eso es un sistema de busqueda.

Ahora una vez localizado y situandode en el registro X.... tienes que ve ver si hay mas elementos adelante de la lista. si es el ultimo no hay problema solo borras los datos y el contador lo decrementas en 1, pero si hay mas elementos tines que recorrelos de uno en uno o solo intercambiándolo con el ultimo pero pues es cosa de que decidas como hacerlo.

Es mas facil con apuntadores pero si no los has manejado la cosa se complica un poco.

Mi estimado ya me dormir espero y puedas terminar tu programa a tiempo y también que lo puedas hacer solo.

Un saludo!




En línea

Angel774

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: LLenar arreglo con un archivo txt
« Respuesta #16 en: 7 Junio 2016, 06:12 am »

jej si sigues ahi, porque no me busca  :-\

Código:
void agenda::buscar_contacto()
{
    char aux[30];
    int i=0;
    contacto x;
  cout<<"Introduce el contacto a buscar:";
  cin>>aux;
  cout<<"cont vale:"<<cont;

  while(i<cont)
  {
      if(strcmp(aux,lista[cont].nombre)==0)
      {
          cout<<"Contacto encontrado";

      }

  }

}


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: LLenar arreglo con un archivo txt
« Respuesta #17 en: 7 Junio 2016, 13:40 pm »

estas buscando cont veces en el mismo elemento lista[cont] cuando deberia de ser lista, ademas no estas incrementando el valor de i en cada busqueda

Código
  1. int agenda::buscar_contacto()
  2. {
  3.    char aux[30];
  4.    int i=0,encontrado = -1;
  5.    contacto x;
  6.  cout<<"Introduce el contacto a buscar:";
  7.  cin>>aux;
  8.  cout<<"cont vale:"<<cont;
  9.  
  10.  while(encontrado ==-1 &&i<cont)
  11.  {
  12.      if(strcmp(aux,lista[i].nombre)==0)
  13.      {
  14.          cout<<"Contacto encontrado";
  15.          encontrado = i;
  16.      }
  17.      i++;
  18.  }
  19.  return encontrado; // Retornamos el valor de la posicion en el arreglo donde esta nuestro valor buscado
  20. }
  21.  
  22.  

Saludos!
En línea

Angel774

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: LLenar arreglo con un archivo txt
« Respuesta #18 en: 8 Junio 2016, 03:14 am »

Muchas gracias bro, ya quedo todo mi programa pero tengo un problema con la funcion de eliminar

Código:
void agenda::eliminar_contacto()
{
  char aux[30];
  int i=0;
  bool error=false;
  cout<<"Introduce el contacto a eliminar:";
  cin>>aux;

 while(i<cont)
 {
      if(strcmp(aux,lista[i].nombre)==0)
      {
          error=true;
          cout<<"Contacto eliminado"<<endl;
           lista[i].mostrardatos();
           
           lista[i]=lista[i-1];
           cont--;
      }
    i++;
 }
   if(!error)
     cout<<"No encontrado"<<endl;
    else
     mostrar_contacto();
  cout<<endl;

}

En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines