为什么 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
。
我有一个包含 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
。