Hola, tengo una duda y es que quiero que el programa me pida un int para inicializarlo en una structura, y luego que pinte ese numero en pantalla, y no se que estoy haciendo mal, ya que el numero no se imprime, debe haber algun error ya que el programa termina, la cosa es que al compilar no me da errores. Dejo el codigo a ver si me podeis hechar una mano, gracias.
struct _game{
int player;
int jugador;
};
typedef struct _game Game;
Ahí delcaro la estructura
int main(){
int x;
T_Command h;
Game *game;
long y;
y=3;
funcion(&y);
printf ("%ld \n",y);
scanf ("%i",&game->jugador);
printf ("%i",game->jugador);
return 0;
}
y ahí el resto del programa. Un saludo :)
game es un puntero indefinido asi que es logico que se produzca una excepcion no controlada y termine el programa. Siempre es buena idea inicializar las variables; ese codigo deberia mostrarte un warning de este estilo:
warning C4700: uninitialized local variable 'game' used
O usas una variable local o reservas memoria para el puntero y se la asignas.
Entonces tendría que hacer algo asi:
game = (Game*)malloc(sizeof(Game))
Con esto reservaria memoria para el puntero ¿no?
PD: me recomiendan algún libro donde hable sobre todo esto? structuras, punteros y reserva de memoria para estos?
Si, es correcto, no te olvides de liberar la memoria reservada, en este caso con free.
Hace muchos años que no compro un libro de C/C++ pero este tema sale en cualquiera incluso de C que tenga 30 años.
Sobre el libro que pides tienes un buen paper en esta dirección:
www.cimat.mx/~alram/cpa/pointersC.pdf
Muchas gracias a los dos por las respuestas :)
De nadas ::)