Título: Problema con scanf en un *char en estructura Publicado por: dato000 en 10 Diciembre 2013, 14:56 pm Buenas, muchas sigo con problemas mediante punteros, es un problema interesante, me interesa saber porque ocurre este error, y no encuentro nada relacionado con el tema, por favor una ayudita.
Al momento de escanear el *char mes, me sale un error de Segmentation Fault, y es que eso ocurre con el scanf de esa cadena, no se porque carajos ocurre eso, conceptualmente. no se como corregir ese error y no se porque tanto dilema con ese apuntador, que ni siquiera esa usandose en la otra estructura, dejandolo independiente de la otra estructura anidada "fecha" Código
me sale esto: (http://fotos.subefotos.com/43c6c08ed3cfde9fdac4b927fb930383o.png) Poco a poco avanzo en el tema de punteros... :silbar: :silbar: Título: Re: Problema con scanf en un *char en estructura Publicado por: amchacon en 10 Diciembre 2013, 15:51 pm El error se debe a:
Código Estás metiendo un texto entero en la dirreción de la variable char*, pero claro solo tiene un byte asi que el resto de caracteres cogen otras zonas de la memoria, probablemente estes modificando otras variables sin darte cuenta... Que haya llegado a hacer segmentation fault ha sido lo mejor, si no estarías como un loco mirando porque las variables cambian de valor de repente. Prueba a reservar memoria estática previa: Código
Dado que un array se representa por la dirreción de su primer elemento, no necesitas el operador &: Código Aunque yo haría: Código Así te asegura que no se lean más de 300 caracteres. Título: Re: Problema con scanf en un *char en estructura Publicado por: dato000 en 10 Diciembre 2013, 16:49 pm lo raro es que el enunciado del ejercicio indica que la asignación *char deberia funcionar, pues en el capitulo indica que el uso de punteros a cadenas maneja el *char como un espacio de memoria para arreglos.
Pensaba que era algo así, entonces lo indicado es siempre usar un arreglo para estas caracteristicas y no confiarse tanto del apuntador, vale muchas gracias amchacon Una ultima cosa más, implementando tu solución encontre lo siguiente 1. En la estructura, debo seguir apuntando a un arreglo: Código
Y para leer un máximo de caracteres con scanf como en el ejemplo que dejaste mes[300] Código La verdad estoy más acostumbrado a usar scanf :xD :xD Otra cosa sobre el fscanf es que, intente usarlo con demás variables, pero solo me funciona con archivos presentes, como puedo leer una de las otras variables de las estructuras?? Título: Re: Problema con scanf en un *char en estructura Publicado por: amchacon en 10 Diciembre 2013, 18:22 pm fscanf? Quería decir fgets, con tanto scanf se me fue la pinza :silbar:
Una ultima cosa más, implementando tu solución encontre lo siguiente Pues no la conocía, pero si te funciona puede sustituir al fgets.1. En la estructura, debo seguir apuntando a un arreglo: Código
Y para leer un máximo de caracteres con scanf como en el ejemplo que dejaste mes[300] Código La verdad estoy más acostumbrado a usar scanf :xD :xD Otra cosa sobre el fscanf es que, intente usarlo con demás variables, pero solo me funciona con archivos presentes, como puedo leer una de las otras variables de las estructuras?? Como te dije, creía que había puesto fgets. fscanf sería:Código Pero para eso usas scanf y escribes menos. Título: Re: Problema con scanf en un *char en estructura Publicado por: rir3760 en 10 Diciembre 2013, 18:34 pm Al momento de escanear el *char mes, me sale un error de Segmentation Fault, y es que eso ocurre con el scanf de esa cadena, no se porque carajos ocurre eso El problema principal no se debe a scanf sino a las direcciones que le pasas a esta. Cuando declaras una variable local:Código Esta inicia con un valor no definido o "basura". Si se trata de estructuras esto aplica a sus campos y el programa reventara tan pronto trates de utilizar uno de los punteros. Para solucionarlo debes primero reservar dos bloques de memoria y almacenar la dirección de estos en los campos de la variable "nuevoDato": Código También debes eliminar la variable "t" ya que no la utilizas en el programa. El programa con los cambios y algunos mas: Código
Un saludo Título: Re: Problema con scanf en un *char en estructura Publicado por: dato000 en 10 Diciembre 2013, 20:53 pm gracias por sus respuestas gente, todavia no me he metido con reserva dinamica de memoria, pero muy valiosa la info que me dejaste.
Ya que uds saben, entonces el mejor para leer entradas de teclado seria fgets?? o fscanf??? ambas me parecen buenas opciones, pero quisiera saber opiniones expertas. Título: Re: Problema con scanf en un *char en estructura Publicado por: amchacon en 10 Diciembre 2013, 21:50 pm gracias por sus respuestas gente, todavia no me he metido con reserva dinamica de memoria, pero muy valiosa la info que me dejaste. fgets para cadenas de texto y scanf para todo lo demás.Ya que uds saben, entonces el mejor para leer entradas de teclado seria fgets?? o fscanf??? ambas me parecen buenas opciones, pero quisiera saber opiniones expertas. PD: Sí, scanf sin f. Título: Re: Problema con scanf en un *char en estructura Publicado por: dato000 en 11 Diciembre 2013, 05:11 am fgets para cadenas de texto y scanf para todo lo demás. PD: Sí, scanf sin f. oh muchas gracias lo tendre en cuenta, me di cuenta que fscanf y scanf son casi lo mismo XD, pero fgets si captura toda una cadena de texto incluyendo espacios, aunque termina cada cadena con un "\n" pero no es nada dificil maneja eso. muchas gracias ;-) ;-) |