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.
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 (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!
oh chico no me sabia esa!!! gracias!!!!
funciona perfectamente, gracias!!