fscanf 函数 returns -1 当预期为 9 时

fscanf function returns -1 when 9 is expected

第一行如下

Fre     18/07 18.30     FCN - FCV       3 - 2      3.349  

扫描函数为:

struct match_data match[300];
while(!feof(file_pointer))
{
    if(fscanf(file_pointer, "%[^ ] %d/%d %[^ ] %[^ ] - %[^ ] %d - %d %lf \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)) != 9);
    {
        printf("Error Reading file");
        return -1;
}

我希望看到将以下内容放入结构中

match_day: FRI

match_date_day: 18

match_date_month: 07

match_time: 18.30

match_home_team: FCN

match_away_team: FCV

match_home_goals: 3

match_away_goals: 2

match_spectators: 3.349

不过如标题所说,该函数并没有return9,测试时returns -1

编辑

添加了结构

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;
    double match_spectators;
};

并添加到我声明结构数组的扫描中

您在 if 条件后直接放了一个分号,使代码 运行 错误成为空语句。

后面的复合语句不管有没有错误都会执行

为避免此错误和其他 "stupid" 错误,您应该尽可能多地启用编译器警告。例如,在 gcc 上,这意味着向编译器添加 -Wall -Wextra 个参数(您可以查看文档以了解其他警告以启用)。