gpt4 book ai didi

c - 结构数组读取函数将所有数组值更改为最新输入 - C

转载 作者:太空宇宙 更新时间:2023-11-04 01:10:38 25 4
gpt4 key购买 nike

其中:ssize 是数组的输入大小,student 是全局声明的结构,read_stud 是我用来读取数组的函数。

当打印出来时,s[count].first 给出了正确的名字,但是 s[0] 和之后的所有值也是相同的名字,而不是之前输入的值。它正在将结构值更改为我最近的输入!

struct student //this struct is global
{
int number;
char *first ;
char *last ;
};

struct student read_stud (int number, char *first , char *last) //my read_stud function
{
struct student s;
s.number = number;
s.first = first;
s.last = last;
return s;
}

这是在 int main 中,我在其中使用函数 s = calloc(ssize, sizeof (struct student));

for (count = 0; count < ssize ; ++count)
{
printf ("Enter student number, name and last name: \n");
scanf ("%d %s %s", &number, &first, &last);
s[count] = read_stud (number, first, last);
}

非常感谢能为我解决这个问题的人!

最佳答案

您需要在您的student 结构中为名字和姓氏提供存储空间。

如果您知道它们的最大长度是多少,请在结构中使用 char 数组。

#define MAX_NAME_CHARS (20)

struct student //this struct is global
{
int number;
char first[MAX_NAME_CHARS];
char last[MAX_NAME_CHARS];
};

否则,malloc 字符串并记得稍后释放它们。

struct student read_stud (int number, char *first , char *last) //my read_stud function
{
struct student s;
s.number = number;
s.first = strdup(first);
s.last = strdup(last);
return s;
}

关于c - 结构数组读取函数将所有数组值更改为最新输入 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13141567/

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