SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: hunter en Domingo 26 de Noviembre de 2006, 00:39

Título: Nuevo En C
Publicado por: hunter en Domingo 26 de Noviembre de 2006, 00:39
Hola a todos bueno soy noob en C y me gustaria ke me ayuden..
estoy leyendo un manual de C y estoy en matrices con estructuras me gustaria ke me ayuden en esto.. /* Uso DevC++*/

#include <stdio.h>
struct
{
 char nombres[50];
 unsigned char edad;
}(persona);
main()
{
 printf("Ingrese nombre: ");
 scanf("%s",&persona.nombres);
 printf("Ingrese la edad: ");
 scanf("%d",&persona.edad);
 printf("Sus nombres son: %s\nSu edad es: %d",persona.nombres,persona.edad);
}
me sale todo bien pero cuando kiero poner mas de un nombre con espacios solo me sale el primer nombre y ya no me lee la edad, me he dado cuenta ke si escribo todo el nombre de corrido sin espacios si corre bien, pero me gustaria ke lo hiciera con espacios, porfavor les pidos su ayuda y explikenme ke pasa ya ke soy nuevo en esto del C...
De Antemano Gracias xD!
Título: Re: Nuevo En C
Publicado por: robertogt en Domingo 26 de Noviembre de 2006, 00:50
usá gets o fgets en lugar de scanf,

Código: Text
  1.  
  2. char nombre[50];
  3. printf( &#34;Ingrese nombre:&#092;n&#34;); gets(nombre);
  4.  
Título: Re: Nuevo En C
Publicado por: ArKaNtOs en Domingo 26 de Noviembre de 2006, 00:54
así es con scanf la cadena se trunca al poner un espacio, es como si pusieras un enter, pero sigue leyendo ;)

prueba esto y veras a lo que me refiero :D

ingresa esta cadena: asdasd 5 con scanf
Título: Re: Nuevo En C
Publicado por: robertogt en Domingo 26 de Noviembre de 2006, 01:02
probá con este codigo, devería funcionar

Código: Text
  1. #include &#60;stdio.h&#62;
  2. struct
  3. {
  4. char nombres[50];
  5. unsigned char edad;
  6. }(persona);
  7.  
  8. main()
  9. {
  10. printf(&#34;Ingrese nombre: &#34;);
  11. gets(persona.nombres);
  12. printf(&#34;Ingrese la edad: &#34;);
  13. scanf(&#34;%d&#34;,&persona.edad);
  14. printf(&#34;Sus nombres son: %s&#092;nSu edad es: %d&#34;,persona.nombres,persona.edad);
  15.  
  16. }
  17.