c - 在 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
解决方案
#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;
}
推荐阅读
- python - 使用类获取名称元素的问题
- r - 如何将.txt文件中的字符串列表转换为数据框
- java - 特殊字符上的 Java 字符相等
- c# - 在 Winform 应用程序中输入文本框后,组合框菜单重复错误
- java - Android下获取DNS TCP TLS时间
- python - 我如何保持在同一条线上?
- reactjs - ReactJS子组件在父状态改变后不更新
- java - Java for 循环,同时将变量保持在一个范围内
- java - SLF4J:使用 log4j 时无法加载类“org.slf4j.impl.StaticLoggerBinder”错误
- r - 如何使用 R 在绘图上打印外文