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:
#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
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 . . .