Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Naimaderis en 15 Julio 2017, 21:36 PM

Título: Duda con funcion que devuelve un struct
Publicado por: Naimaderis en 15 Julio 2017, 21:36 PM
Hola, quiero generar una carta aleatoria, pero mediante una funcion, el problema esta en que el programa no me compila. La funcion generara carta, crea una estructura temp y le asigna palo y numero, y retorna la struc, pero al hacer carta1 = generarcartaaleatoria(); me provoca un error porque al parecer es de tipo int, lo cual no entiendo.

#include <stdio.h>

struct carta
{
int numero;
char palo;
};

int numero[12];
char palo[4] = {'c', 'o', 'b', 'e'};
typedef struct carta cartau;

int main()
{
rellenar(numero,12);
cartau carta1;
carta1 = generarcartaaleatoria();
}

cartau generarcartaaleatoria()
{
cartau temp;
temp.numero = numero[rand()%11];
temp.palo = palo[rand()%4];
return temp;
}

void rellenar(int *vector,int tamanio){
int i;
for(i = 0; i < tamanio; i++) {
   vector[i] = i+1;
}
return 0;
}
Título: Re: Duda con funcion que devuelve un struct
Publicado por: engel lex en 15 Julio 2017, 21:43 PM
los errores por encima son

-no creaste los prototipos de la función, por lo que main no las conocerá...
-no agregaste stdlib.c que es quien tiene contiene a rand() (y tambien el uso de srand con time para inicializar)
-haces return en rellenar, lo cual da error porque rellenar es de tipo void (es decir tipo sin return)