【问题标题】:How to scan info from .txt to array of structures?如何将 .txt 中的信息扫描到结构数组?
【发布时间】:2021-03-04 16:24:38
【问题描述】:

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

KHNU 300 12 24
舍甫琴卡 500 15 32
关键绩效指标 900 13 35
戈尔斯科戈 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 扫描到结构数组的算法!

谢谢。

【问题讨论】:

  • 它可以编译吗? struct University *u[4] = malloc(4 * sizeof(struct University)); 看起来很不对劲。此外,您之后不会对 u 做任何事情,那么您怎么能声称它“不扫描”?
  • @Eugene Sh.它不编译...
  • 那么不是没有扫描,而是没有编译。首先通过一个一个地修复错误使其编译。
  • 看起来您已经有了读取文件的算法(在循环中读取值)。现在你需要修复你的代码。

标签: c scanf info


【解决方案1】:

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

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

应该是这样的:

struct University *u = (struct University *)malloc(4 * sizeof(struct University));
  1. 当您将文件内容扫描到结构数组中时;您使用u[i] 访问结构数组并使用-&gt; 获取结构元素。但是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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多