gpt4 book ai didi

c - 对长结构数组进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 04:32:42 24 4
gpt4 key购买 nike

所以我有一个包含月份和日期的结构数组,我想对其进行排序,以便第一个结构将包含 1 月的第 1 天,第二个结构将包含 mont 1 的第 2 天,依此类推。

我试图通过将正确的数组存储在时间数组中然后替换它们来实现这一点。

我的问题是,要执行以下操作,我可以制作的唯一算法使我的提示崩溃并给我一个段错误。到现在为止,我已经很困惑了,不知道是我的逻辑错了,还是我以一种过于复杂的方式让程序无法运行。

这是我的鳕鱼的功能

void sortData(struct StructData data[], int size){

int i=0,x=0,z=0,v_day=0,v2_day=0;
struct StructData temp[sz];

for (i=0;i!=12;i++){

for (x=0;x!=12;x++){

if (data[x].month == i+1){

for (v=0;v!=31;v++){

for(v2=0;v2!=31;v2++){

if (data[v2].day == v+1){

temporal[z] = data[v2];
z=z+1;

}
}
}
}
}
}

i=0;


for (i=0;i!=size;i++){
data[i] = temporal[i];
}
}

可能有更好的方法来做到这一点,我只是没有看到。

最佳答案

您可能希望将 qsort 与类似这样的比较函数一起使用:

int comp (const void * elem1, const void * elem2)
{
struct StructData f = *((struct StructData*)elem1);
struct StructData s = *((struct StructData*)elem2);
if (f.day > s.day) return 1;
if (f.day < s.day) return -1;
return 0;
}

请记住,所有这些代码可能都不起作用。很长时间没有编写 C 代码,所以这更像是理论代码。基本上,您想查看数组中的结构并以某种方式比较它们在函数内部的值。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com