C-fscanf仅从文件中读取一个字符串的第一个单词

问题描述 投票:0回答:1

[当我尝试使用fscanf读取结构的文件信息时遇到问题,它仅读取字符串的第一行并且循环永无休止,如何解决此问题?

结构

typedef struct {
    int id;
    char name[80];
    char nameStadium[80];
    int numberPlacesStadium;
    float funds;
    float monthlyExpenses;
    int active;
} Team;

而且我用这段代码来阅读

void showAll(void)
{
    FILE* file;
    Team team;

    file = fopen("file.txt", "rt");

    if (file == NULL)
    {
        printf("!!!Cant open file!!!\n");
        return;
    }

    rewind(file);

    printf("\n\n=== TEAMS ======\n");
    printf("%s\t%s\n", "ID", "NAME");

    while (fscanf(file, "%6d %s %s %6d %f %f %03d\n", &team.id, team.name, team.nameStadium, &team.numberPlacesStadium, &team.funds, &team.monthlyExpenses, &team.active) != EOF)
    {
        if (team.active != 0)
        {
            printf("%d\t%s\n", team.id, team.name);
        }
    }

    fclose(ficheiro);

}

我不明白为什么scanf只得到第一个单词而不是完整字符串

有人知道如何解决吗?

谢谢

c file scanf
1个回答
0
投票

我刚刚按照您发布的格式使用示例文本文件测试了您的代码。除了未正确关闭文件外,其他一切似乎都很好。它应该看起来像这样

fclose(file);
© www.soinside.com 2019 - 2024. All rights reserved.