Me da este error en tiempo de ejecución.
Código C:
Ver original
typedef struct { unsigned short int ano, mes, dia, hora, min, seg; }tipo_fecha; //Tipo de dato usuario. typedef struct { char login[21], password[21], nombre[21], apellido[42], ext[6]; tipo_fecha ult_reserva; }tipo_usuario; //Tipo de dato reserva typedef struct { unsigned short int ocupado; tipo_usuario usuario; }tipo_reserva; void consultar_reservas_mes(tipo_reserva *matriz_reservas) { int mes, dia, hora; int tamanho; tamanho=sizeof(tipo_reserva); /*do { printf("\nNumero del mes a consultar: ");scanf("%d",&mes); /*if ((mes>12) || (mes<1)) printf("\nNumero de mes no valido.\n"); else break; }while(1);*/ mes=8; //Recorro la matriz_reservas buscandos los unos en la matriz_reservas.ocupado e imprimo la reserva; for (dia=0;dia<31;dia++) for (hora=0;hora<10;hora++) { if ( (matriz_reservas+(tamanho*10*30*mes)+(10*tamanho*dia)+(tamanho*hora))->ocupado!=0) { ,dia,mes,hora,(matriz_reservas+(tamanho*12*30*mes)+(12*tamanho*dia)+(tamanho*hora))->usuario.nombre, (matriz_reservas+(tamanho*10*30*mes)+(10*tamanho*dia)+(tamanho*hora))->usuario.apellido); } } } int main() { //Declaración de las variables char basura; unsigned short int mes,dia,hora; char opcion,confirmacion; char nombre[STRING_CORTO], password[STRING_CORTO]; tipo_usuario usuario; tipo_fecha fecha; //los índices de los arrays: mes,dia,hora tipo_reserva matriz_reservas[12][31][12]; //Pongo todas las reservas a 0. for (mes=0;mes<12;mes++) for (dia=0;dia<31;dia++) for (hora=0;hora<12;hora++) matriz_reservas[mes][dia][hora].ocupado=0; do { if (opcion==1) { if (/*login(usuario)*/1) { do { opcion=menu(); switch(opcion) { case 1: introducir_datos(&usuario); break; case 2: consultar_reservas_mes(&matriz_reservas[0][0][0]);//Aquí es donde invoco la funcion break; case 3: //consultar_reservas_usuario(matriz_reservas, usuario); break; case 4: else { do { if ((validar_fecha(fecha)) || ((fecha.hora<21) && (fecha.hora>7))) break; }while(1); if (matriz_reservas[fecha.mes][fecha.dia][fecha.hora].ocupado==0) { { matriz_reservas[fecha.mes][fecha.dia][fecha.hora].ocupado=1; usuario.ult_reserva=fecha; ,fecha.dia,fecha.mes,fecha.hora,matriz_reservas[fecha.mes][fecha.dia][fecha.hora].usuario.nombre,matriz_reservas[fecha.mes][fecha.dia][fecha.hora].usuario.apellido); } } } break; case 5: else { do { if ((validar_fecha(fecha)) || ((fecha.hora<21) && (fecha.hora>7))) break; }while(1); if (matriz_reservas[fecha.mes][fecha.dia][fecha.hora].ocupado==0) printf("\nNo hay ninguna reserva para esta fecha y esta hora\n"); else { { fecha.dia,fecha.mes,fecha.hora,matriz_reservas[fecha.mes][fecha.dia][fecha.hora].usuario.nombre, matriz_reservas[fecha.mes][fecha.dia][fecha.hora].usuario.apellido); { matriz_reservas[fecha.mes][fecha.dia][fecha.hora].ocupado=0; } } else printf("\nNo se puede borrar la reseva ya que el usuario actual no coincide con el de la reserva\n"); } } break; case 6: break; break; } }while(opcion!=6); } } else if (opcion==2) { break; } else { } }while(1); }
No me llega ni a imprimir el "1" por pantalla. Llevo probado mil cosas y no sé. Empiezo a desesperarme. No he puesto todas las funciones que tengo pa no liar.
Venga, un saludo y muchas gracias por adelantado!