Título: LLenar arreglo con un archivo txt Publicado por: Angel774 en 7 Junio 2016, 00:59 am Hola!! Lo que pasa es que tengo que hacer un agenda en c++ que lea un archivo de texto y lo cargue en un arreglo de tipo contacto, una vez que se cargo tengo que trabajar en el arreglo con las operaciones de: agregar contacto, buscar, eliminar, mostrar todo, y modificar una vez hecho esto sobrescribir el txt con la nueva información
Este es el codigo que llevo Código: #include <iostream> Título: Re: LLenar arreglo con un archivo txt Publicado por: AlbertoBSD en 7 Junio 2016, 01:15 am Hola no se que dudas tengas... Te dejo 2 videos de mi canal de youtube que te podrian servir.
a2569dz-0Cs DOqtEMW1Nqk Espero y te sirvan de ejemplo Título: Re: LLenar arreglo con un archivo txt Publicado por: Angel774 en 7 Junio 2016, 01:36 am Ya vi los vídeos, y te lo agradezco en si mi duda es como cargar el archivo en el arreglo lista para después trabajar con el
Título: Re: LLenar arreglo con un archivo txt Publicado por: AlbertoBSD en 7 Junio 2016, 01:54 am a ok para empezat deberia de dejar una estructura sin funciones, y delegar esas funciones a la clasr agenda
En lugar de: Código
Mejor asi mas limpio: Código
Las funciones las pasas a la clase agenda. Y para cargar el archivo seguimos el ejemplo del video. Saludos Título: Re: LLenar arreglo con un archivo txt Publicado por: Angel774 en 7 Junio 2016, 02:06 am Gracias amigo, pero tu estas ocupando fwrite() y yo tengo que ocupar fscanf() para cargar la información en el arreglo y trabajar en el arreglo
Título: Re: LLenar arreglo con un archivo txt Publicado por: AlbertoBSD en 7 Junio 2016, 02:19 am Necesariamente tiene que ser fscanf?
Para guardar estructuras lo ideal es fwrite y fread, tambien se puede hacer con fscanf solo que ahi necesitas leer dato por dato. Y si quieres modificar un dato en especifico tendras que escribir y reescribir el archivo en cada modificacion. Cosa que con fwrite no necesitas.. No he tenido chance de ralalizar un vídeo con fscanf pero en teoria tienes que leer linea por linea como su fuera la entrada estandar... Código es lo mismo que Código Si sabés usar el segundo sabras usar el primero solo cambias stdin por tu filedescriptor... Trata de crear primero la funcion guardar los guardas con fprintf un dato por linea y ya que crees el archivo lo tratas de leer. Saludos Título: Re: LLenar arreglo con un archivo txt Publicado por: Angel774 en 7 Junio 2016, 02:22 am Es que de hecho tengo que leer linea por linea ya que no tengo que modificar el archivo directamente, mas bien tengo que pasar toda la informacion del archivo a un arreglo una vez ahi, trabajo sobre el arreglo y no en el archivo
Código: agenda::agenda() Título: Re: LLenar arreglo con un archivo txt Publicado por: AlbertoBSD en 7 Junio 2016, 04:19 am Código:
En mi vida habia visto un formato de cadena asi para leer Citar "%[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 ]" Deberia de ser algo como : Código
Aunque creo, no estoy seguro de como procesar lel retorno de linea correctamente con fscanf tengo mucho sin usarlo frecentemente, incluso te recomendaria fgets para las cadenas y el numero, posteriormente preocesas el buffer temporal del numero con atoi... Aunque nuevamente insisto ¿Es totalmente necesario que sea fscanf? Repito es mas eficiente leer una estructura con fread... Saludos Título: Re: LLenar arreglo con un archivo txt Publicado por: Angel774 en 7 Junio 2016, 04:38 am Muchas gracias amigo :D si era asi, otra duda ¿Como añado un nuevo contacto al arreglo lista?
Título: Re: LLenar arreglo con un archivo txt Publicado por: AlbertoBSD en 7 Junio 2016, 04:51 am Tu variable contador es el numero del proximo en la lista:
Código
Entonces miestras no leas mas de 60 contactos desde el archivo, existira espacio suficiente para 60 menos los leidos. En tu funcion: Código
deberia de quedar como Código
O algo parecido. Saludos Título: Re: LLenar arreglo con un archivo txt Publicado por: Angel774 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
Título: Re: LLenar arreglo con un archivo txt Publicado por: AlbertoBSD en 7 Junio 2016, 05:17 am ¿Como estas guardado los datos?
Tu funcion: Código
No hace nada solo abre y cierra el archivo. Saluds Título: Re: LLenar arreglo con un archivo txt Publicado por: Angel774 en 7 Junio 2016, 05:18 am Ya la modifique ahora esta asi
Código: void agenda::guardar_contacto() Título: Re: LLenar arreglo con un archivo txt Publicado por: AlbertoBSD 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
Saludos!! Título: Re: LLenar arreglo con un archivo txt Publicado por: Angel774 en 7 Junio 2016, 05:33 am Muchas gracias bro!! ¿Como seria la de eliminar contacto?
Título: Re: LLenar arreglo con un archivo txt Publicado por: AlbertoBSD 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! Título: Re: LLenar arreglo con un archivo txt Publicado por: Angel774 en 7 Junio 2016, 06:12 am jej si sigues ahi, porque no me busca :-\
Código: void agenda::buscar_contacto() Título: Re: LLenar arreglo con un archivo txt Publicado por: AlbertoBSD 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
Saludos! Título: Re: LLenar arreglo con un archivo txt Publicado por: Angel774 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() |