Título: Necesito ayuda en "Structs" en C, tengo un error muy gordo Publicado por: DarkSorcerer en 13 Enero 2014, 23:38 pm Saludos comunidad, tengo un error muy gordo acerca de los structs en C, resulta que quiero crear personas usando structs en vez de crear una clase (paradojicamente, empecé al revés, es decir, de C++ a C)
La cosa es que cree una estructura que representa a una persona, tiene un nombre, apellido paterno, apellido materno, edad y rut (numero de identificación), la cosa es que en el main quiero crearlos y através de una función es la que imprime por pantalla los valores de cada persona para ahorrar lineas de código, pero no me funciona, me vi obligado a hacerlo en el main y también me sale error, les pongo mi código para que me puedan ayudar porfavor. Estoy usando DevC++. En el fondo del post se encuentra una captura del error. Código
(http://s2.subirimagenes.com/imagen/previo/thump_8773049error.png) Título: Re: Necesito ayuda en "Structs" en C, tengo un error muy gordo Publicado por: xiruko en 14 Enero 2014, 00:01 am A ver, primer error es que te falta un ';' al final de la declaración del struct:
Código
Segundo, en C, una vez pasada la declaración de las variables, no se pueden asignar las cadenas de esta manera: Código
En lugar de eso, deberías hacerte alguna función para copiar carácter a carácter o usar, por ejemplo, la función strncpy() (http://www.cplusplus.com/reference/cstring/strncpy/) de la librería 'string.h'. Quedaría algo así: Código
También puedes inicializar las variables del tipo de tu estructura al momento de declararlas: Código
edito: mirando el código, sería una buena práctica que pasaras un puntero de tu estructura a la función 'desplegarValores' en lugar de la estructura en sí, ya que así evitarías que se hiciera una copia local de ella. Si además no quieres que en la función se modifique el valor de tu estructura, podrías pasarla con el parámetro 'const'. Te quedaría algo así: Código
Y en la función 'main' deberías llamarla así: Código
Un saludo. Título: Re: Necesito ayuda en "Structs" en C, tengo un error muy gordo Publicado por: DarkSorcerer en 14 Enero 2014, 00:22 am Gracias, me pudo funcionar :D
Título: Re: Necesito ayuda en "Structs" en C, tengo un error muy gordo Publicado por: xiruko en 14 Enero 2014, 00:24 am De nada :)
Saludos. Título: Re: Necesito ayuda en "Structs" en C, tengo un error muy gordo Publicado por: DarkSorcerer en 16 Enero 2014, 23:41 pm Ahora tengo otra duda, error logico, el programa me compila pero no como lo esperaba.
Lo que hice fue ir mas allá de mi programa anterior, quise hacer un programa con menú incluido, se trata de una registradora de personas en un arreglo de structs, cada struct representa a una persona, pero cuando quiero desplegar por pantalla, sus datos aparecen como si no hubiera sido registrado, además otro error que tengo es que en una parte del programa cuando pregunta el nombre, se salta a la siguiente instrucción y no permite que se registre el nombre, en mi código lo verán, repetí 2 veces la línea de código problema. Otro problema menor es que no me funciona el comando "clrscr" para limpiar la pantalla, Ahora, pondré mi código y al fondo del post coloqué un link para que puedan ver mi captura de lo que se ve en consola. Código
http://www.subirimagenes.com/imagen-errorc-8777151.html Título: Re: Necesito ayuda en "Structs" en C, tengo un error muy gordo Publicado por: rir3760 en 17 Enero 2014, 02:01 am Lo primero que debes hacer es cambiar colocar la declaración de la estructura antes de la declaración del array:
Código
El porque se "salta" la lectura del nombre se debe a que estas intercalando llamadas a gets (no deberías, en su lugar fgets) y scanf, el tema se ha tratado en los foros y solo es cuestión de utilizar el motor de búsqueda. Para solucionarlo debes eliminar el resto de la linea después de cada llamada a scanf (y antes de una llamada a fgets), por ejemplo la función "menuPrincipal" se debe cambiar a: Código El cambio en la función "ingresarPersona" es similar. El porque no se imprimen los datos correctamente se debe al bucle de la función "desplegarDatos": Código En el cuerpo de este utilizas "personas[ cant ]" cuando debería ser "personas[ i ]". Un saludo Título: Re: Necesito ayuda en "Structs" en C, tengo un error muy gordo Publicado por: DarkSorcerer en 17 Enero 2014, 23:11 pm Lo primero que debes hacer es cambiar colocar la declaración de la estructura antes de la declaración del array: Código
El porque se "salta" la lectura del nombre se debe a que estas intercalando llamadas a gets (no deberías, en su lugar fgets) y scanf, el tema se ha tratado en los foros y solo es cuestión de utilizar el motor de búsqueda. Para solucionarlo debes eliminar el resto de la linea después de cada llamada a scanf (y antes de una llamada a fgets), por ejemplo la función "menuPrincipal" se debe cambiar a: Código El cambio en la función "ingresarPersona" es similar. El porque no se imprimen los datos correctamente se debe al bucle de la función "desplegarDatos": Código En el cuerpo de este utilizas "personas[ cant ]" cuando debería ser "personas[ i ]". Un saludo Ya me dí cuenta de mi error, y me equivoqué por una tontería T.T, por esto "personas[cant]" en vez de "personas", es que andaba apurado y tenía que irme a otra parte :O, pero de todas maneras gracias por informarme. Al final usé la siguiente instruccion "fflush(stdin)" para que no se saltara la lectura del nombre, ¿ que opinas ? Título: Re: Necesito ayuda en "Structs" en C, tengo un error muy gordo Publicado por: rir3760 en 18 Enero 2014, 01:41 am No se recomienda utilizar fflush(stdin), las razones se describen en el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).
Alternativas hay varias, puedes utilizar el motor de búsqueda para revisar los temas relacionados con el bufer de la entrada estándar. Un saludo |