Мне нужно сделать программу, в которой пользователь выбирает континент. Программа прочитает файл выбранного континента. Затем программа спросит столицу страны выбранного континента. Прямо сейчас я сосредоточен на Европе. (Файл на испанском sh, но в порядке)
Первая строка - страна, вторая строка - столица и т. Д. , Я не очень хорош в этом. Конечно, это глупая ошибка, или я неправильно понял теорию. Код выполняется, но читает файл странным образом. Вот код:
#include <stdio.h>
#include <stdlib.h>
#define N 33
int Europa(char EuropaP[N][N], char EuropaC[N][N]);
//int Asia();
FILE *eu;
FILE *as;
int main()
{
int p1, salir;
char EuropaP[N][N];
char EuropaC[N][N];
while(salir != 0)
{
printf("-----MENU PRINCIPAL-----\n"); //main menu where the users selects the continent.
printf("Elige un continente\n\n");
printf("1. Europa\n");
printf("2. Asia\n");
printf("\nEscribe 0 para salir");
printf("\nSeleccion: ");
scanf("%d", &p1);
if (p1 == 1)
{
Europa(EuropaP, EuropaC);
}
else if (p1 == 2)
{
//Asia();
}
else
fclose(eu);
//fclose(as);
break;
}
return 0;
}
int Europa(char EuropaP[N][N], char EuropaC[N][N])
{
int vida, c, i;
eu = fopen("Europa.txt", "r");
if (eu == NULL){
printf("No se ha abierto correctamente el fichero");
}
else
for(i=0; i<33; i++)
{
fscanf(eu, "%s\n%s", EuropaP[i], EuropaC[i]);
}
for(c=0; c<33; c++)
{
printf("%s\n%s", EuropaP[c], EuropaC[c]);
printf("\n");
}
}
Пример выполнения:
Как видите, файл не читается правильно , Я не знаю, как скопировать страны и столицы в массив.
ПРОБЛЕМА ИСПРАВЛЕНА! Я добавил возврат 0; здесь:
if (eu == NULL){
printf("No se ha abierto correctamente el fichero");
return 0;
}
изменил каталог файла .txt:
int Europa(char EuropaP[N][N], char EuropaC[N][N])
{
int vida, c, i;
eu = fopen("/Users/****/Desktop/Europa.txt", "r");
и, наконец, я использую fgets вместо fscanf.
else
for(i=0; i<N; i++)
{
fgets(EuropaP[i], N, eu);
fgets(EuropaC[i], N, eu);
}
for(c=0; c<N; c++)
printf("%s\n%s", EuropaP[c], EuropaC[c]);
printf("\n");
Пример исполнения