Foro de elhacker.net

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.
Código
  1. #include <stdio.h>
  2.  
  3. struct carta
  4. {
  5. int numero;
  6. char palo;
  7. };
  8.  
  9. int numero[12];
  10. char palo[4] = {'c', 'o', 'b', 'e'};
  11. typedef struct carta cartau;
  12.  
  13. int main()
  14. {
  15. rellenar(numero,12);
  16. cartau carta1;
  17. carta1 = generarcartaaleatoria();
  18. }
  19.  
  20. cartau generarcartaaleatoria()
  21. {
  22. cartau temp;
  23. temp.numero = numero[rand()%11];
  24. temp.palo = palo[rand()%4];
  25. return temp;
  26. }
  27.  
  28. void rellenar(int *vector,int tamanio){
  29. int i;
  30. for(i = 0; i < tamanio; i++) {
  31.    vector[i] = i+1;
  32. }
  33. return 0;
  34. }
  35.  


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)