У меня проблема в моем программировании, я совершенно не знаю, почему я не могу использовать qsort в своей программе для сортировки этих структурных массивов упорядоченным способом? Может каким-то образом помочь мне? в этой программе есть 4 узла, и каждый узел представляет файл, узел имеет имя файла, размер и тип файла. Я хочу сортировать его на основе имени файла, но я совершенно не понимаю, почему qsort не работает вообще!Как использовать qsort в C для сортировки массива struct?
#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
Как вы отметили C++, принимаете ли вы решение для сортировки по C++? –
, конечно, c или C++ – python3
Что вы имеете в виду? – python3