我有一个简单的程序,列出了用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/

10-11 17:21