首页 > 解决方案 > 在 C 中对目录中的文件进行排序,包括区分大小写

问题描述

我有一个 C 代码片段:我使用 dirent.h 并使用 opendir 和 readdir 读取文件我正在使用 c 代码执行 ls 命令重复,因为该文件应该是升序并且还包括区分大小写。

#include <stdio.h>
#include <dirent.h>

int main(void)
{
    DIR *d;
    struct dirent *dir;
    d = opendir(".");
    printf("d: %d \n",d);
    if (d)
    {
        while ((dir = readdir(d)) != NULL)
        {
            printf("\n %s \n", dir->d_name);
        }
        closedir(d);
    }
    else
    {
        printf("soory");
    }

    return (0);
}

我得到了结果

krishna-R
stat.c
temp
Bing
TempFolder
button

我想要的是

Bing
button
krishna-R
stat.c
TempFolder
temp

标签: cfilesortingdirectorydirent.h

解决方案


#include <stdio.h>
#include <dirent.h>
#include <string.h>
int main(void)
{
    char array[50][30]={};
    int i=0, j=0, k=0;
    DIR *d;
    struct dirent *dir;
    d = opendir(".");
    printf("d: %d \n",d);    
    if (d)
    {
        while ((dir = readdir(d)) != NULL)
        {
            strcpy(array[i], dir->d_name);
            i++;
        }
        for (k = 0; k <= i; k++)    /* Sorting files alphabetically */
            for (j = k + 1; j <= i; j++)
            {
                if (strcasecmp(array[k], array[j]) > 0)
                {
                    strcpy(tmp, array[k]);
                    strcpy(array[k], array[j]);
                    strcpy(array[j], tmp);
                }
            }
        closedir(d);
      }
      for (int a = 0 ; a < i ; a++)
      {
          printf("%s \n",array[a]);
      }
      return 0;
}

推荐阅读