我正在建一个学生数据库作为我在C大学的作业,
遇到了一个我似乎无法解决的问题。
这是我的代码:
void sortArrays(char names[max_n_students][max_name_student],int counter)
{
int i, j;
if (counter > 1) // means more than 1 course is in the database
{
for (i = 0; i < counter; i++)
{
for (j = 1; j < counter; j++)
{
if (strcmp(names[i], names[j]) > 0) /* problem here? */
{
swapArrays(names[MAX_STUDENTS][MAX_NAME], i, j);
}
}
}
}
}
基本上,我要做的是通过索引比较函数中的两个字符串(字符串的2d数组),如果返回值大于0,则执行替换其名称的swap函数。但是,我收到一个异常警告。
你能告诉我有什么问题吗?
我有了指针的基本概念,虽然我不想在这里使用它,因为在我交换名字之后,我需要交换他们的成绩、姓氏等。
最佳答案
很可能“strcmp”是罪魁祸首/误用。如果两个名称都完全填充为名称分配的char数组,strcmp将尝试访问数组之外的内存范围。考虑改用strncmp。
可能不是你的问题的原因,但首先如果条件似乎多余。第二个循环中j的初始值应为I+1,结束条件j
关于c - 比较2D数组内部,函数内部的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47860414/