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

问题描述 投票:1回答:1

我正在建立一个学生数据库作为我在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字符串数组),如果返回值> 0,则执行替换其名称的交换函数。但是,我收到异常警告。你能给我一个提示是什么问题吗?

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

c arrays database
1个回答
0
投票
  1. 最有可能“strcmp”是罪魁祸首/误用。如果两个名称完全填充为name分配的char数组,strcmp将尝试访问数组之外​​的内存范围。请考虑使用strncmp。
  2. 可能不是你的问题的原因,但首先如果条件似乎多余。第二个循环中j的初始化应该是I + 1并且结束条件j <counter - 1.这看起来是在字符串上使用的选择排序。
© www.soinside.com 2019 - 2024. All rights reserved.