Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/12/2010, 12:20
luface2000
 
Fecha de Ingreso: octubre-2006
Mensajes: 169
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Problema de principiante con struct en C

El código completo es este

Código:
/*System header files*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*Symbolic constants*/
#define NUM_MAX 5

/*User defined types*/
typedef struct{
	char nombre[NUM_MAX];
	int ano;
	int edad;
} tNino;

typedef struct{
	int id;
	tNino datos [2];	
} tAlumnos;	

tAlumnos palmera;

int main (void)
{
	printf("Hola Mundo\n");
	
	palmera.id = 0;
	strcpy (palmera.datos[0].nombre, "Laura");
	palmera.datos[0].ano = 2000;
	palmera.datos[0].edad = 10;
	printf("Los datos son: ID=%d Nombre=%s Año Nacimiento=%d y Edad=%d\n", palmera.id, palmera.datos[0].nombre, palmera.datos[0].ano, palmera.datos[0].edad);
	
/*PRUEBA*/
	printf("Esto imprime el primer caracter de %s que es = %c\n", palmera.datos[0].nombre, palmera.datos[0].nombre[0]);
	
	palmera.id = 1;
	strcpy (palmera.datos[1].nombre, "Pablo");
	palmera.datos[1].ano = 2003;
	palmera.datos[1].edad = 8;
	printf("Los datos son: ID=%d Nombre=%s Año Nacimiento=%d y Edad=%d\n", palmera.id, palmera.datos[1].nombre, palmera.datos[1].ano, palmera.datos[1].edad);
	
	palmera.id = 2;
	strcpy (palmera.datos[2].nombre, "Pili");
	palmera.datos[2].ano = 1972;
	palmera.datos[2].edad = 38;
	printf("Los datos son: ID=%d Nombre=%s Año Nacimiento=%d y Edad=%d\n", palmera.id, palmera.datos[2].nombre, palmera.datos[2].ano, palmera.datos[2].edad);
	
	palmera.id = 3;
	strcpy (palmera.datos[3].nombre, "Lorenzo");
	palmera.datos[3].ano = 1968;
	palmera.datos[3].edad = 42;
	printf("Los datos son: ID=%d Nombre=%s Año Nacimiento=%d y Edad=%d\n", palmera.id, palmera.datos[3].nombre, palmera.datos[3].ano, palmera.datos[3].edad);
	
	palmera.id = 14;
	strcpy (palmera.datos[14].nombre, "Lorenzo");
	palmera.datos[14].ano = 1968;
	palmera.datos[14].edad = 42;
	printf("Los datos son: ID=%d Nombre=%s Año Nacimiento=%d y Edad=%d\n", palmera.id, palmera.datos[14].nombre, palmera.datos[14].ano, palmera.datos[14].edad);
	return 0;
}
Y funciona todo OK. No entiendo que "instanciando" más de 2 datos de palmera lo acepte sin error.

Gracias.