Dudas con estructuras??

Iniciado por dato000, 15 Septiembre 2012, 04:24 AM

0 Miembros y 1 Visitante están viendo este tema.

dato000

Buenas, muchach@s, tengo una duda, que se que no es tan dificil, pero no termino de entender. Retome mis estudios con C, y sigo leyendo por ahi, pero quisiera saber opiniones.

Porque no funciona el siguiente código?


#include <stdio.h>
#include <stdlib.h>

struct persona
{
   //char nombre[30];
   int edad;
   float altura;
   float peso;
};

main()
{
   struct persona camilo;

   //camilo.nombre = "camilo";
   camilo.edad = 24;
   camilo.altura = 175;
   camilo.peso = 75;
   printf("Sizeof (persona) :  %d \n", sizeof(camilo));
   //printf("nombre : \n", camilo.nombre);
   printf("años : %d \n", camilo.edad);
   printf("altura : %.2f \n", camilo.altura);
   printf("peso) : %.2f \n", camilo.peso);

}


Funciona perfectamente, menos para imprimir la cadena de texto, me sale el error:
Citar
C:\Users\dato000\Documents\c++\estructura2\main.c|16|error: incompatible types when assigning to type 'char[30]' from type 'char *'|

no termino de entender eso.



xiruko

#1
en C las cadenas no las puedes asignar como cualquier numero, tienes que usar la funcion strcpy o strncpy de la libreria string.h (mejor la segunda ya que asi puedes limitar el numero de caracteres a copiar):

http://c.conclase.net/librerias/?ansifun=strncpy

strncpy(camilo.nombre, "camilo", sizeof(camilo.nombre)-1);

y para imprimir una cadena tienes que usar el especificador de formato %s:

printf("Nombre: %s\n", camilo.nombre);

luego stdlib.h no la usas para nada en el codigo asi que no haria falta incluirla. y no estaria mal que el main devolviera algun valor para saber si el programa acabo correctamente.

un saludo!


dato000

oh chico no me sabia esa!!! gracias!!!!

funciona perfectamente, gracias!!