У меня проблемы с открытием файла в C - PullRequest
0 голосов
/ 02 октября 2019

Я предполагаю, что у меня проблема с компиляцией, но я хочу убедиться, что это не моя вина.

Я сравнил свой код с каким-то другим из программы, которую я сделал пару дней назад, и я буквально не смог найти никакой разницы.

FILE *f;
f = fopen("gps.txt","r");

if (f == NULL){
    printf("Couldn't open the file.");
    return 0;
}
int i= 0;
int n;
while(fscanf(f,"%c %d %d %d %c %d %d %d %d %d %d",&gps[i].sirina,&gps[i].stepen,&gps[i].min,&gps[i].sek,&gps[i].duzina,&gps[i].s1,&gps[i].m1,&gps[i].sek1,&gps[i].visina,&gps[i].brzina,&gps[i].sateliti)==11)
    i++;

n = i;
printf("%d",gps[1].sek);

Информация о файле: (25 5522 N 123 213 123 S 25 23 2

123 123 123 N 234 25 53 S 123 5 1

12 41 3 N 12 5 13 S 1 2 4)

Результат этого кода всегда равен 0 (это просто для того, чтобы проверить, могу ли я продолжать делать свою программу). В файл записана информация, я дважды проверил, сохранял ли я ее каждый раз, но программа по-прежнему выдает 0. В том же коде, который я написал пару дней назад, с выводами все в порядке, включая тот факт, что файл один и тот же.

Я был бы рад узнать, есть ли проблема с компиляцией или если в моем коде есть ошибка. Спасибо!

1 Ответ

0 голосов
/ 02 октября 2019

согласно вашему вводу строка в fscanf неверна. вы используете следующую строку:

%c %d %d %d %c %d %d %d %d %d %d"

это пример строки ввода: 25 55 22 N 123 213 123 S 25 23 2

вам нужна следующая строка:

%d %d %d %[^A-Z] %c %d %d %d %[^A-Z] %c %d %d %d

основываясь на данном примере, вы читаете 25,55,22, используя% d.

, затем пропускаете пробелы и т. Д., Используя %[^A-Z], а затем вы читаете N или S, используя %c. пробел тоже персонаж, на него нужно обратить внимание.

...