gpt4 book ai didi

c - 如何在 C 中使用 qsort 对结构数组进行排序?

转载 作者:太空宇宙 更新时间:2023-11-04 08:21:11 25 4
gpt4 key购买 nike

我的编程有问题,我完全不知道为什么我不能在我的程序中使用 qsort 来按顺序对这些结构数组进行排序?有什么办法可以帮助我吗?在这个程序中,有4个节点,每个节点代表一个文件,节点有文件名、大小和文件类型。我想根据文件名对其进行排序,但我完全不知道为什么 qsort 根本不起作用!

#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <unistd.h>



//int cmp(const void *a,const void*b);



typedef struct node
{
char filename[255];
char filetype[255];
long ofilesize;
long newfilesize;
}Node;
Node Line[4];

int cmp(const void *a,const void*b)
{

return strcmp(((Node *)a)->filename,((Node *)b)->filename);
}

int main(){
/* int j=0;
for(;j<4;j++){
Line[j]=(Node*)malloc(sizeof(Node));

}*/
strcpy(Line[0].filename,"b.txt");
strcpy(Line[1].filename,"c.txt");
strcpy(Line[2].filename,"d.txt");
strcpy(Line[3].filename,"e.txt");

int i=0;
for(;i<4;i++){
strcpy(Line[i].filetype,"regular file");
Line[i].ofilesize=i;
Line[i].newfilesize=i;

}



for(i=0;i<4;i++)
{
printf("File %s has type %s original size %ld new size %ld \n",Line[i].filename,Line[i].filetype,Line[i].ofilesize,Line[i].newfilesize);

}

qsort((void *)&Line,4,sizeof(Node),cmp);


for(i=0;i<4;i++)
{
printf("File %s has type %s original size %ld new size %ld \n",Line[i].filename,Line[i].filetype,Line[i].ofilesize,Line[i].newfilesize);

}


}

这是我的输出:

File b.txt has type regular file original size 0 new size 0 
File c.txt has type regular file original size 1 new size 1
File d.txt has type regular file original size 2 new size 2
File e.txt has type regular file original size 3 new size 3
File b.txt has type regular file original size 0 new size 0
File c.txt has type regular file original size 1 new size 1
File d.txt has type regular file original size 2 new size 2
File e.txt has type regular file original size 3 new size 3

最佳答案

被删除评论的作者说的是

int cmp(Node *a,Node *b) {
return strcmp(a->filename,b->filename);
}

应该是

int cmp(Node **a,Node **b) {
return strcmp((*a)->filename,(*b)->filename);
}

如果你想保留你的指针。

关于c - 如何在 C 中使用 qsort 对结构数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33358291/

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