c - 比较2D数组内部,函数内部的字符串

标签 c arrays database

我正在建一个学生数据库作为我在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/

相关文章:

arrays - 如何在 Go 中混合使用十六进制和字符串创建字节数组?

mysql - 如何将多维数组传输到 MySQL 表(通过 Zeoslib)?

php - 如何将 URI 数组从 php 发送到 python 并在那里打印

c - 如何手动引起中断?

混淆 MACRO 和枚举定义

c++ - fork 时哪些系统和库调用是安全的?

c# - 在事件发生时从 DataGridView 更新数据库无法正常工作

c++ - 在矩阵中,在不使用额外空间的情况下,将 0 放入包含 0 的单元格的行和列中

database - Postgres STRING_TO_ARRAY 替代方案?喜欢 STRING_TO_RECORD?

python - 如何解决Django中的Unknown Field Error