Alphasort的功能

时间:2017-02-23 00:12:19

标签: c sorting

我在我的一个C程序中使用scandir()函数。在scandir()中,我要求它对我的目录进行alphasort。然而,当我有像alpha,bob这样的文件时,它们被放置在像DARK或Dec​​omp.txt这样的文件下。我认为这是因为ascii值的工作原理。但是有没有方法让我的排序是:alpha,bob,DARK,decomp.txt而不是DARK,Decomp.txt,alpha,bob。

因为基本上我应该对树unix命令进行建模,并且需要以这种方式对其进行排序。

下面的代码只显示了我的打印方式。

void listdir(const char *name, int level, int hidden, int access)
{
DIR *dir;
struct dirent **entry;
int n = 2;
int num;
char path[1024];
int len;
int count = 0;
if (!(dir = opendir(name)))
{
    printf("%s [error opening dir]\n", name);
    return;
}
num = scandir(name,&entry,NULL,alphasort);
if(num<0)
{
    perror("scandir");
}
while(n<num){
    /* Bunch of formatting to print files/directory */
    /* Pseudocode */
    /* if( it is a directory)
       print current directory
       recursive call on function

       else
       print current file */
    n++;
}

closedir(dir);

}

1 个答案:

答案 0 :(得分:1)

类似的东西:

#include <strings.h>

int alphasort_case_insensitive(const struct dirent ** a, const struct dirent **b) {
  return(strcasecmp((*(const struct dirent **)dirent1)->d_name,
                    (*(const struct dirent **)dirent2)->d_name));
}