gpt4 book ai didi

c - 我是否以错误的方式使用结构?

转载 作者:行者123 更新时间:2023-11-30 18:57:00 28 4
gpt4 key购买 nike

我遇到了这个奇怪而神秘的(至少对我来说)错误,我发现很难找到它。它在我调用函数 input(student_list1[MAX], &total_entries); 的行给出了一个错误,编译器说:

incompatible type for agument 1 in 'input'

我在这里做错了什么?我觉得这是非常简单和愚蠢的事情,但我已经检查了代码好几次了,但没有任何效果。

#define MAX 10
#define NAME_LEN 15

struct person {
char name[NAME_LEN+1];
int age;
};

void input(struct person student_list1[MAX], int *total_entries);

int main(void)
{
struct person student_list1[MAX];
int total_entries=0, i;

input(student_list1[MAX], &total_entries);

for(i=0; i<total_entries; i++)
{
printf("Student 1:\tNamn: %s.\tAge: %s.\n", student_list1[i].name, student_list1[i].age);
}

return 0;
} //main end

void input(struct person student_list1[MAX], int *total_entries)
{
int done=0;
while(done!=1)
{
int i=0;
printf("Name of student: ");
fgets(student_list1[i].name, strlen(student_list1[i].name), stdin);
student_list1[i].name[strlen(student_list1[i].name)-1]=0;

if(student_list1[i].name==0) {
done=1;
}

else {
printf("Age of student: ");
scanf("%d", student_list1[i].age);
*total_entries++;
i++;
}
}
}

最佳答案

函数参数中的

struct person Student_list1[MAX]实际上是一个指向struct person Student_list1的指针。

您传递的

student_list1[MAX] 是数组 struct person Student_list1[MAX] 的(越界)成员。有效的数组索引应在 0MAX - 1 之间。

将其更改为:

input(student_list1, &total_entries);

请注意,此处数组名称 student_list1 会自动转换为指向 student_list1[0] 的指针。

关于c - 我是否以错误的方式使用结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22291427/

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