c - 在C错误中对结构数组进行排序

原文 标签 c arrays sorting data-structures

我正在用C编写电话簿应用程序。我有一个结构为节点(联系人)的数组(sort2)。我试图按nodes->pnum(电话号码)对数组进行排序; s是数组中的节点数。由于某种原因,循环在第一次迭代后会产生错误。为什么?

for(i=0; i<s;i++)
{
    for(j=0;j<s;j++)
    {
       num1= sort2[i];
       num2= sort2[j];
       if(num1->pnum<num2->pnum)
       {
            temp=sort2[j];
            sort2[j]=sort2[j+1];
            sort2[j+1]=temp;
            printf("%s",sort2[j]->lname);
            printf("%s",sort2[j+1]->lname);
        }
    }
}

最佳答案

j等于s-1时,您将在以下几行中访问数组的边界之外的内容:

        sort2[j]=sort2[j+1];
        sort2[j+1]=temp;
        printf("%s",sort2[j+1]->lname);


我认为您打算使用:

        sort2[j]=sort2[i];
        sort2[i]=temp;
        printf("%s",sort2[i]->lname);

关于c - 在C错误中对结构数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25062045/

相关文章:

c++ - 在标题中使用#ifndef _HEADER_H_ #define _HEADER_H_

c - 在C语法说明中通过指针访问数组

javascript - jQuery:使用多个数组匹配确定ChildNodes HTML的类属性?

c++ - 在 C++ 中对多个链接数组进行排序

javascript - Javascript 排序中真正发生的事情

c - 交换C中数字的第一位和最后一位数字

c - 在C中使用getc()函数的未知逻辑错误

java - 在 n^2*log(n) 时间内具有 4 个数字的 3sum 的变体?

java - 我无法弄清楚如何在逗号分隔的列表中获取用户输入并将其放入 ArrayList

excel - 按字母顺序排序和过滤使用工作表名称自动填充的组合框