gpt4 book ai didi

c - 结构函数不适用于我的数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:52:11 26 4
gpt4 key购买 nike

所以我基本上有一个带有名称的结构,它必须是动态的,还有一个 ID。我认为它可以看起来像这样。

typedef struct {
char *name;
unsigned int id;
} person;

现在我将用给定的开始编写一个函数:

person *readData();

结构和名称都必须是动态的,我想用 malloc 函数来做到这一点。对于所有人,也应该有一个数组,我们将其命名为“people[1000]”。

这是我对上述功能的主要功能的尝试:

int count = 0;

person *readData() {
int i, len;
char puffer[1000];

printf("Name: ");
scanf_s("%999s", &puffer);

len = strlen(puffer);
people[count].name = (char *)malloc((len + 1)*sizeof(char));

for (i = 0; i < len; i++)
people[count].name[i] = puffer[i];

people[count].name[len] = '\0';
}

void main(void)
{
person *people[1000];
readData();
printf("\n%s\n", people[count].name);
}

嗯,好像不是这样的。 Visual Studio 在函数中说,“people”必须是 union 或 struct 类型。任何快速输入?这只是基本的 C,因为我才刚刚开始学习它。

编辑:完整代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
char *name;
unsigned int id;

} person;

person people[1000];

int count = 0;

person *readData() {
int i, len;
char puffer[1000];
printf("Name: ");
scanf_s("%999s", &puffer);
len = strlen(puffer);
people[count].name = (char *)malloc((len + 1)*sizeof(char));
for (i = 0; i < len; i++)
people[count].name[i] = puffer[i];
people[count].name[len] = '\0';


}

void main(void){
readData();
printf("\n%s\n", people[count].name);

}

最佳答案

people 变量在您的 readData 函数体中未定义。这就是编译器因错误而失败的原因。

  1. 您可以将变量传递给函数 person *readData(person *people)。不要忘记在 main 函数中将 readData(); 更改为 readData(people);

  2. 如果您只需要一维数组,请不要将指针表示法与数组表示法混合使用。使用 person people[1000]; 而不是 person *people[1000];

关于c - 结构函数不适用于我的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21019291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com