在函数内部比较2d数组内的字符串

时间:2017-12-17 23:20:45

标签: 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);
             }
         }
     }
 }
}

基本上,我要做的是比较函数中的2个字符串的索引(2d字符串数组),如果返回值是&gt; 0然后执行替换其名称的交换功能。但是,我收到异常警告。 你能给我一个提示是什么问题吗?

我得到了指针的基本概念,虽然我不想在这里使用它,因为在我交换名字之后我需要交换他们的成绩,姓氏等。

1 个答案:

答案 0 :(得分:0)

  1. 最有可能“strcmp”是罪魁祸首/误用。如果两个名称完全填充为name分配的char数组,strcmp将尝试访问数组之外​​的内存范围。请考虑使用strncmp。
  2. 可能不是您的问题的原因,但首先如果条件似乎多余。第二循环中的j的初始化应该是I + 1并且结束条件j <1。 counter - 1.这显示为字符串上使用的选择排序。