gpt4 book ai didi

C 错误 : Expected expression

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

第一次发帖。所以我正在构建一个程序,它在一个结构中保存学生的记录。我想使用一个包含六个元素的数组,然后将每个元素作为一个结构....我有

typedef struct {
char* name;
char* surname;
char* UUN;
char* department;
char gender;
int age;
} student;

...

int main(void) {

int i;

student studentarr[5];

...所以任务是定义前三个元素并让用户输入后三个。我试过定义;

studentarr[0] = { "John", "Bishop", "s1234", "Inf", 'm', 18 };
studentarr[1] = { "Lady", "Cook", "s345", "Eng", 'f', 21 };
studentarr[2] = { "James", "Jackson", "s3456", "Eng", 'm', 17 };

但是编译器报错

studentDB2.c:27:18: error: expected expression
studentarr[0] = { "John", "Bishop", "s1234", "Inf", 'm', 18 };
^

studentDB2.c:28:18: error: expected expression
studentarr[1] = { "Lady", "Cook", "s345", "Eng", 'f', 21 };
^

studentDB2.c:29:18: error: expected expression
studentarr[2] = { "James", "Jackson", "s3456", "Eng", 'm', 17 };
^

我该如何解决?

另一个问题是,声明是否学生学生[5]实际上创建了六个结构,例如;

studentarr[0]
studentarr[1]
studentarr[2]
studentarr[3]
studentarr[4]
studentarr[5]

我很清楚这看起来有多么基础,但我必须参加这类题型的考试。感谢所有帮助!

编辑:

所以我有一个函数

void printStudent(student s) {
printf("Name: %s %s\n", s.name, s.surname);
printf("UUN: %s\n", s.UUN);
printf("Department: %s\n", s.department);
printf("Gender: %c\n", s.gender);
printf("Age: %d\n", s.age);
}

编译器要求用户在 student 结构中输入信息(在帖子的开头)但是现在当函数 printStudent 运行时,它会像这样显示输入的信息

Student 5
Name: Nina Storrie
UUN: S3736PSYf
Department: PSYf
Gender: f
Age: 19

为什么UUN和Department是这样打印的?

最佳答案

如果你想用一个数组来存储 6 个学生的信息,那么你必须这样声明它

student studentarr[6];
^^^

你可以在声明时初始化它

student studentarr[6] =
{
{ "John", "Bishop", "s1234", "Inf", 'm', 18 },
{ "Lady", "Cook", "s345", "Eng", 'f', 21 },
{ "James", "Jackson", "s3456", "Eng", 'm', 17 }
};

在本例中只有数组的三个元素被显式初始化。由零隐式初始化的所有其他元素。

如果你想给数组的元素赋值,你可以使用复合字面量。

例如

student studentarr[6];
studentarr[0] = ( student ) { "John", "Bishop", "s1234", "Inf", 'm', 18 };

否则,您必须分别分配数组元素的每个数据成员。

例如

studentarr[0].name = "John";
studentarr[0].surname = "Bishop";

等等

编辑:更新代码后,这个初始化数据成员部门声明如下

char department[3];

如果您想存储字符串,则使用字符串文字“Inf”是无效的。字符串文字有 4 个字符,包括终止零。因此,如果您希望该数据成员 department 也包含此类字符串,您必须像这样声明它

char department[4];
^^

关于C 错误 : Expected expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32018135/

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