为什么 sscanf 只读取两行指针指向指针?

Why does sscanf reads only two lines with pointer to pointer?

我有一个包含 10 行的文件,每行中有姓名、ID 和年龄,用空格分隔。问题是,当使用 fgets 和 sscanf 读取此文件时,returns 我在尝试读取超过 2 行时遇到段错误。

typedef struct Person
{
    char t;
    long i;
    float a;
} Person;



*arrPersons = (Person*)malloc(10 * sizeof(Person));

int assignInputPeople(Person **arrPersons,  FILE *inputPeople)
{
    int counter = 0;
    char fileLine[344];
    long ID;
float ageF;
 while (fgets(fileLine, 344, inputPeople) != NULL)
    {
        sscanf(fileLine, "%s %s %s", arrPersons[counter]->name,&ID)
   
    
}

我为我的数组创建了一个指向指针的指针,这样我就可以在其他函数中修改它,就像上面这个函数一样。

如果您在 main() 函数中传递 arrPersons 的地址作为 assignInputPeople() 函数的参数 arrPersons,则 arrPersons[counter]->name 是错误的,因为arrPersons 指向的内容只能容纳一个 elemnet,因此当 counter 不是 0.

时,它超出范围

在这种情况下,应该是(*arrPersons)[counter].name