我有一个简单的程序,列出了用C语言编写的文件。我只是想知道我可以在代码中添加什么,以便文件按顺序打印出来?谢谢
while ((directory = readdir(dir)) != NULL)
{
printf("%s\n", directory->dir_name);
}
最佳答案
首先必须将名称存储在数组中,max dirs是dirs的最大数目(或者可以使用calloc
动态分配数组)
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
char dirs[MAXDIRS][512]; // you have to ensure correct allocation (eg names < 512 chars)
int ndirs = 0; // number of dirs
while ((directory = readdir(dir)) != NULL) {
strcpy(dirs[ ndirs++ ], directory->d_name);
}
// Then sort the directories
// need a sorting function
int comp(void const *a, void const *b) {
char const *u = (char const *)a;
char const *v = (char const *)b;
return strcmp(u, v);
}
// use qsort to sort the dirs
qsort (dirs, ndirs, sizeof(dirs[0]), comp);
dirs
现在包含一个排序的目录数组// display
int i;
for (i=0 ; i<ndirs ; i++) {
printf("%s\n", dirs[i]);
}
关于c - 列出C中的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14674100/