#1 [C] ayuda con un problemita de struct
tengo un problema creando un archivo de cabecera, hice una funcion que me tiene que devolver una estructura.Pero cuando la quiero implementar con un programita me tira un error, aca les mando el codigo del header file y el del programa, a ver si alguien me puede ayudar.
El error que me tira es illegal estructure operation
Este es el archivo de cabecera:
#include <string.h>
#include <stdlib.h>
typedef enum {
SinActividad = 0,
ClaseNormal,
EvaluacionGrupalEscrita,
EvaluacionGrupalOral,
EvaluacionGrupalIndividual,
ExamenFinal,
InscripcionACurso,
InscripcionAExamenFinal,
PrimeraClase,
PrimerRecuperatorio,
SegundoRecuperatorio,
UltimaClase
} TipoDeActividad;
static const char *meses[12][2] = {
{"Ene", "Enero"},
{"Feb", "Febrero"},
{"Mar", "Marzo"},
{"Abr", "Abril"},
{"May", "Mayo"},
{"Jun", "Junio"},
{"Jul", "Julio"},
{"Ago", "Agosto"},
{"Sep", "Septiembre"},
{"Oct", "Octubre"},
{"Nov", "Noviembre"},
{"Dic", "Diciembre"},
};
typedef struct {
int fecha;
TipoDeActividad tipo;
const char *descripcion;
} Actividad;
static const int DiasAnio[]={0,31,60,91,121,152,182,213,244,274,305,335};
Actividad Actividad_Crear(int,const char*,TipoDeActividad, const char*);
Actividad Actividad_Crear(int dia, const char *mes, TipoDeActividad tipoact,
const char *desc)
{
Actividad act;
int i;
for (i=0; (strcmp(mes, meses[i][0]) == 0) && i < 12; i++) {
if ( i == 12 )
act.fecha = 0;
act.fecha = dia + DiasAnio[i];
if ( malloc(strlen(desc) + 1) != NULL)
act.descripcion = malloc(strlen(desc) + 1);
strcpy(act.descripcion, desc);
}
return act;
}
Este es el programa:
#include <stdio.h>
#include "c:\progc\activida.h"
main(void)
{
struct tipo {
int fecha;
int tipo;
const char *descripcion;
} acti;
acti = Actividad_Crear(15, "Feb", 1,"Sin prueba");
printf("%d %s", acti.fecha,acti.descripcion);
return 0;
}
El error que me tira es illegal estructure operation
Este es el archivo de cabecera:
#include <string.h>
#include <stdlib.h>
typedef enum {
SinActividad = 0,
ClaseNormal,
EvaluacionGrupalEscrita,
EvaluacionGrupalOral,
EvaluacionGrupalIndividual,
ExamenFinal,
InscripcionACurso,
InscripcionAExamenFinal,
PrimeraClase,
PrimerRecuperatorio,
SegundoRecuperatorio,
UltimaClase
} TipoDeActividad;
static const char *meses[12][2] = {
{"Ene", "Enero"},
{"Feb", "Febrero"},
{"Mar", "Marzo"},
{"Abr", "Abril"},
{"May", "Mayo"},
{"Jun", "Junio"},
{"Jul", "Julio"},
{"Ago", "Agosto"},
{"Sep", "Septiembre"},
{"Oct", "Octubre"},
{"Nov", "Noviembre"},
{"Dic", "Diciembre"},
};
typedef struct {
int fecha;
TipoDeActividad tipo;
const char *descripcion;
} Actividad;
static const int DiasAnio[]={0,31,60,91,121,152,182,213,244,274,305,335};
Actividad Actividad_Crear(int,const char*,TipoDeActividad, const char*);
Actividad Actividad_Crear(int dia, const char *mes, TipoDeActividad tipoact,
const char *desc)
{
Actividad act;
int i;
for (i=0; (strcmp(mes, meses[i][0]) == 0) && i < 12; i++) {
if ( i == 12 )
act.fecha = 0;
act.fecha = dia + DiasAnio[i];
if ( malloc(strlen(desc) + 1) != NULL)
act.descripcion = malloc(strlen(desc) + 1);
strcpy(act.descripcion, desc);
}
return act;
}
Este es el programa:
#include <stdio.h>
#include "c:\progc\activida.h"
main(void)
{
struct tipo {
int fecha;
int tipo;
const char *descripcion;
} acti;
acti = Actividad_Crear(15, "Feb", 1,"Sin prueba");
printf("%d %s", acti.fecha,acti.descripcion);
return 0;
}
