我正在尝试使用 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] == ' ')
{
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;
}
-
很明显,错误使用错误
strcpy
。正确的方法是
strcpy(firstNames[set], firstName);
-
同样在循环中它应该是
for (cset = 0; cset < MAX_COURSES; cset++) { strcpy(courses[cset], dynCourses); strcpy(grades[cset], dynGrades); }
注意惯用的C循环是
for (int i = 0; i < MAX; i++)
,使用<
而不是<=
。
strcpy
函数的签名是
char *strcpy(char * restrict s1, const char * restrict s2);
早些时候,您传递了代替s1
字符而不是char*
.您必须收到一些警告(如果已启用)。如果没有,则将所有编译器标志-Wall -Werror
。
if (firstNames[set][cset] == ' ')
但是,如果您最初使用