【发布时间】:2026-01-04 15:20:04
【问题描述】:
我正在尝试使用 str.cpy 构建一个二维数组,但程序失败。代码接收 4 个数组,将它们的内容复制到匹配的数组中。
int InsertStudent(char *firstName, char* lastName, char* dynCourses, char *dynGrades,
char firstNames[50][20],
char familyNames[50][20], char courses[50][5][20],
char grades[50][5])
{
int set,
int cset = 0;
for (set = 0; set <= (50); set++)
{
if (firstNames[set][cset] == '\0')
{
strcpy(firstNames[set][cset], firstName);
strcpy(familyNames[set], lastName);
for (cset = 0; cset <= 5; cset++)
{
strcpy(courses[set], dynCourses);
strcpy(grades[set], dynGrades);
}
}
}
return 0;
}
【问题讨论】:
-
你看过 struct 吗?这样你就可以让它更加面向对象
-
你了解结构了吗?大概不会,因为您的参数列表需要一个结构类型的数组:
struct Student { char firstName[20]; char familyName[20]; char courses[5][20]; char grades[5]; };— 甚至是struct Course { char name[20]; char grade; }; struct Student { char firstName[20]; char familyName[20]; struct Course courses[5] };。 -
名为:名字、姓氏、成绩和课程的数据数组都是本地的,在堆栈上,所以当数据“超出范围”时,任何将数据放入其中的操作都会消失它会在函数退出时。