Как им назначениях школы поставлена задача, чтобы прочитать список футбольных матчей, со следующим синтаксисомБесконечное время цикла и fscanf не назначая данные на структуру
weekday date time hometeam - outteam hometeam goals - outteam goals #spectators
пример Thsi может быть
FRI 18/07 18.30 FCN - FCV 3 - 2 3.349
что бы сделать следующую запись в моей структуры
struct match_data
{
char match_day[4];
int match_date_day;
int match_date_month;
char match_time[6];
char match_home_team[4];
char match_away_team[4];
int match_home_goals;
int match_away_goals;
int match_spectators;
};
матч _day: ПТ
match_date_day: 18
match_date_month: 07
match_time: 18.30
match_home_team: СКЛС
match_away_team: АХЛИ
match_home_goals: 3
match_away_goals : 2
match_spectators: 3,349
Так что проблемы accour когда я пытаюсь прочитать файл
мой в то время как цикл, кажется продолжаться вечно, когда я запускаю код как есть (с Printf, чтобы проверить Wether данные были присвоены)
int game_loader()
{
int i = 0;
FILE *file_pointer;
file_pointer = fopen("superliga-2014-2015", "r");
if(!file_pointer == NULL)
{
printf("Error opening file");
return -1;
}
struct match_data match[200];
while(!feof(file_pointer))
{
fscanf(file_pointer, "%[^ ][^0-9]%d/%d %[^ ][^A-Z]%[^ ] - %[^ ][^0-9]%d - %d[^ ]%d[^\n]\n",
match[i].match_day, &match[i].match_date_day, &match[i].match_date_month,
match[i].match_time, match[i].match_home_team, match[i].match_away_team, &match[i].match_home_goals, &match[i].match_away_goals, &match[i].match_spectators);
printf("day %d: %s\n", i, match[i].match_day);
i++;
}
printf("match day is: %s\n"
"match date is: %d/%d"
"match time is: %s"
"match is between %s - %s"
"Score was: %d - %d"
"the amount of spectators was: %d",
match[1].match_day, match[1].match_date_day, match[1].match_date_month,
match[1].match_time, match[1].match_home_team, match[1].match_away_team,
match[1].match_home_goals, match[1].match_away_goals, match[1].match_spectators);
return 0;
}
не только делает петлю никогда близко, но, кроме того, fscanf никогда не присваивает данные переменным
им думать, что это потому, что я форматировать fscanf неправомерно, когда я пытаюсь перейти от match_day
к match_date_day
я попытался с помощью [^ 0-9], чтобы пропустить пробелы между днем и датой
Что такое возвращаемое значение 'fscanf()'? * И почему ваш код не проверяет это? * – DevSolar
fscanf возвращает количество элементов, успешно совпадающих и назначенных, я еще не успел вскочить на проверку fscanf, добавив еще один набор паратезмов вокруг него, чтобы добавить 'if! = 9' быть правильным? так что строка будет 'if (fscanf (file_pointer, синтаксис для форматированного txt)! = 9)' –
Ум, глаза кошки? я предполагаю, что вы имеете в виду либо обозначение, либо белое/пустое пространство, что бы вы подразумевали под этим? :-) –