El programa deja de funcionar con la funcion imprimir_mercado, y no entiendo por que sucede esto
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Mercados_Municipales{
char nombre[20];
char direccion[50];
char telefono[11];
}Mercados;
Mercados leer_mercado(void);
void imprimir_mercado(Mercados mercado);
int main(){
Mercados mercados[20];
Mercados mercado;
char desicion;
int i, cantidad = 0, numero;
printf("\n\t\tMercados Municipales de Ciudad Guayana\n\n");
while(cantidad < 20){
do{
printf("%d Mercados Municipales. Pasamos a otro? [S/N] ", cantidad);
desicion = getchar(); // Leemos un caracter
while(getchar() == EOF); // Necesario para se coma el \n
}while(desicion != 'S' && desicion != 's' && desicion != 'N' && desicion != 'n');
if(desicion == 'N' || desicion == 'n') break; // Si elige N, se sale
mercado = leer_mercado();
mercados[cantidad++] = mercado;
}
printf("\nMostrar informacion del Mercado: ");
scanf("%d", numero);
imprimir_mercado(mercados[numero]);
return 0;
}
Mercados leer_mercado(){
Mercados mercado;
printf("\nNombre: ");
gets(mercado.nombre);
printf("Direccion: ");
gets(mercado.direccion);
printf("Telefono: ");
gets(mercado.telefono);
printf("\n");
return mercado;
}
void imprimir_mercado(Mercados mercado){
printf("\n\n\t\t%s", mercado.nombre);
printf("\nDireccion: &s\tTelefono: %s\n", mercado.direccion, mercado.telefono);
}
A scanf le tienes que pasar la dirección de la variable:
scanf("%d", &numero);