como estan amigos
estoy aprendiendo c y
quisera pedirles ayuda con este codigo por favor
se ve largo pero esta facil
lee un fichero llamado "destinos.dat"
y muestra en pantalla lo que esta en ese fichero
el problema es que no lo esta leyendo correctamente
y al final pide que ingreses un numero entre 1 y 5
cuando lo ingresas se genera una violacion de segmento
espero me puedan ayudar con eso, ya le estuve dando vueltas todo el dia al problema
esto es lo que contiene el fichero original
y esto es lo que muestra el programa
estoy aprendiendo c y
quisera pedirles ayuda con este codigo por favor
se ve largo pero esta facil
lee un fichero llamado "destinos.dat"
y muestra en pantalla lo que esta en ese fichero
el problema es que no lo esta leyendo correctamente
y al final pide que ingreses un numero entre 1 y 5
cuando lo ingresas se genera una violacion de segmento
espero me puedan ayudar con eso, ya le estuve dando vueltas todo el dia al problema
Código [Seleccionar]
#include <stdio.h>
/*ESTRUCTURAS-------------------------------------------------------------------*/
typedef struct
{
int cantidad_dias;
int divisas;
}n_dias;
typedef struct
{
int codigo;
n_dias dia[2];
int tamano;
}destinos;
/*PROTOTIPO DE FUNCION----------------------------------------------------------*/
int codigo_destino(destinos r_des[]);
/*ALGORITMO PRINCIPAL-----------------------------------------------------------*/
int main()
{
destinos destino[4];
int seleccion;
seleccion = codigo_destino(destino);
printf("%d seleccion",seleccion);
return 0;
}
/*FUNCION CODIGO_DESTINO--------------------------------------------------------*/
int codigo_destino(destinos r_des[])
{
FILE *destinos;
int i, k, c;
char paises[300];
destinos = fopen("destinos.dat","r");
if(destinos == NULL)
puts("ERROR al abrir el archivo destinos.dat");
else
{
puts("\nseleccione un codigo de destino de la lista");
puts("---------------------------------------------");
k=0;
while(!feof(destinos) && k<5)
{
fscanf(destinos,"%d\n", &r_des[k].codigo);
printf("\nCodigo %d \n", r_des[k].codigo);
puts("-------------------------------------------------");
fscanf(destinos,"%[a-zA-Z, ]\n", paises);
puts(paises);
for(i=0; i<3; i++)
{
fscanf(destinos,"%d %d\n", &r_des[k].dia[i].cantidad_dias, &r_des[k].dia[i].divisas);
r_des[k].tamano = i+1;
printf("Dias del viaje: %d\tcantidad de divisas: %d\n", r_des[k].dia[i].cantidad_dias, r_des[k].dia[i].divisas);
}
puts("-------------------------------------------------");
k++;
}
fclose(destinos);
do
{
puts("\n* ingrese codigo de destino");
scanf("%d",&c);
if(c < 1 || c > 5)
puts("\tel codigo de destino tiene que estar en el rango 1-5");
}
while(c < 1 || c > 5);
}
return(c);
}
esto es lo que contiene el fichero original
Citar
1
Europa, Africa, Oceania
3 2000
7 2000
8 3000
2
Mexico, Estados Unidos, Canada, Belice, Costa Rica, El Salvador, Guatemala, Argentina, Brasil, Chile, Paraguay, Peru, Uruguay, Guyana, Suriname, Antigua, Barbuda, Bolivia, Cuba, Ecuador, Honduras, San Vicente y las Granadinas, Nicaragua
3 1000
7 2000
8 2500
3
Panama
3 500
7 700
8 1000
4
Colombia
3 300
7 500
8 700
5
Otras islas del caribe
3 500
7 700
8 1000
y esto es lo que muestra el programa
Citar
seleccione un codigo de destino de la lista
---------------------------------------------
Codigo 1
-------------------------------------------------
Europa, Africa, Oceania
Dias del viaje: 3 cantidad de divisas: 2000
Dias del viaje: 7 cantidad de divisas: 2000
Dias del viaje: 8 cantidad de divisas: 3000
-------------------------------------------------
Codigo 2
-------------------------------------------------
Mexico, Estados Unidos, Canada, Belice, Costa Rica, El Salvador, Guatemala, Arge
ntina, Brasil, Chile, Paraguay, Peru, Uruguay, Guyana, Suriname, Antigua, Barbud
a, Bolivia, Cuba, Ecuador, Honduras, San Vicente y las Granadinas, Nicaragua
Dias del viaje: 3 cantidad de divisas: 1000
Dias del viaje: 7 cantidad de divisas: 2000
Dias del viaje: 3 cantidad de divisas: 2500
-------------------------------------------------
Codigo 3
-------------------------------------------------
Panama
Dias del viaje: 3 cantidad de divisas: 500
Dias del viaje: 7 cantidad de divisas: 700
Dias del viaje: 3 cantidad de divisas: 1000
-------------------------------------------------
Codigo 4
-------------------------------------------------
Colombia
Dias del viaje: 3 cantidad de divisas: 300
Dias del viaje: 7 cantidad de divisas: 500
Dias del viaje: 3 cantidad de divisas: 700
-------------------------------------------------
Codigo 5
-------------------------------------------------
Otras islas del caribe
Dias del viaje: 3 cantidad de divisas: 500
Dias del viaje: 7 cantidad de divisas: 700
Dias del viaje: 3 cantidad de divisas: 1000
-------------------------------------------------
* ingrese codigo de destino
1
1 seleccion
(aqui el programa deja de responder)
Process exited with return value 3221225477
Press any key to continue . . .