glibc中有一个功能 完全可以满足您的需求 。不幸的是,它是C,而不是C
++,因此,如果可以接受的话,这是“开箱即用”的最简单的解决方案,而无需重新实现任何功能和重新设计轮子。顺便说一句:这与
ls-lv实施完全相同。其中最重要的部分是为您
versionsort执行 自然排序
的功能。在此用作的比较功能
scandir。下面的简单示例将按您希望的顺序打印当前目录中的所有文件/目录。
#define _GNU_SOURCE#include <dirent.h>#include <stdlib.h>#include <stdio.h>int main(void){ struct dirent **namelist; int n,i; n = scandir(".", &namelist, 0, versionsort); if (n < 0) perror("scandir"); else { for(i =0 ; i < n; ++i) { printf("%sn", namelist[i]->d_name); free(namelist[i]); } free(namelist); } return 0;}


