如何将信息从 .txt 扫描到结构数组?

How to scan info from .txt to array of structures?

我在info.txt中有这样的信息:

KHNU 300 12 24
SHEVCHENKA 500 15 32
KPI 900 13 35
GORSKOGO 645 14 45

我只需要将这些信息写入结构数组,但作为新手我不明白该怎么做。这是代码:

void readFile(FILE* pf);
struct University
{
    char name[30];
    int quantityOfStudents;
    int quantityOfFaculties;
    int quantityOfDepartments;
};

int main()
{
    FILE* pf = fopen("info.txt", "rb");

    readFile(pf);
    system("pause");
    return 1;
}

void readFile(FILE* pf)
{
    if ((pf == NULL)) { printf("Error!"); exit(1); }

    struct University *u[4] = malloc(4 * sizeof(struct University));

    for (int i = 0; i < 4; i++)
    {
        fscanf(pf, "%s %d %d %d", &u[i]->name, &u[i]->quantityOfStudents, &u[i]->quantityOfFaculties, &u[i]->quantityOfDepartments);
    }
}

但是,正如您可能猜到的那样,它不会扫描。

请告诉我如何将信息从 .txt 扫描到结构数组的算法!

谢谢。

我认为您的代码存在一些编译问题。您应该能够在编译代码时找到它们。我尝试修复它们,并通过修复这些问题让您的代码正常工作:

  1. malloc returns 指向已分配内存的指针而不是指针数组。所以你的结构分配语句是这样的:
struct University *u[4] = malloc(4 * sizeof(struct University));

应该是这样的:

struct University *u = (struct University *)malloc(4 * sizeof(struct University));
  1. 当您将文件内容扫描到结构数组中时;您使用 u[i] 访问结构数组并使用 -> 获取结构元素。但是 u[i] 解析为 struct University 而不是 struct University *。我认为它应该看起来像这样:
for (int i = 0; i < 4; i++)
{
    fscanf(pf, "%s %d %d %d", &u[i].name, &u[i].quantityOfStudents, &u[i].quantityOfFaculties, &u[i].quantityOfDepartments);
}