如何获取可变大小的结构数组的长度?

How to get the length of a variable size array of structs?

我正在努力解决这个问题,但一直无法解决。 鉴于我有一个结构:

struct person
{
     String name,
     String city,
     int age
}

我正在从外部提供的某个文件中读取人员列表,并填充此结构的数组。这是通过一个函数完成的,比方说

person * readFromFile(filename);

这个函数有读取文件的逻辑,创建一个可变大小的结构数组(适应文件中的人数),return表示数组。

但是,当我尝试将该结果分配给指针时,我没有得到数组的元素:

...
person * myPeople;
myPeople = readFromFile("/people.txt");
int n= ;// different things I-ve tried here
Serial.println("n is" + n);
for(int i=0; i<n; i++)
{ 
     Serial.println(myPeople.name + " (" + String(myPeople.age) + "), "+myPeople.city
}

在研究了如何做到这一点后,我尝试了几种方法来获取填充数组后的元素数量,要知道:

int n = sizeof(myPeople)/sizeof(myPeople[0]);
int n = sizeof myPeople / sizeof *myPeople;
int n = sizeof(myPeople) / sizeof(person);
int n = (&myPeople)[1] - myPeople;

但无济于事:文件中有 5 个元素,但 n 从未显示预期值(当然还有 for 循环中断)。

我能得到一些帮助吗?我做错了什么?

谢谢

不要使用“String”(无论您的情况如何。),而是为每个字符串使用固定的 char 数组。

像这样:

struct person
{
     char name[32], /* string name has a length of 31 + 1 for NULL-termination */
     char city[32], /* string city has a length of 31 + 1 for NULL-termination */
     int age
}