如何在C中按字母数字顺序对文件名进行排序

问题描述

我需要按字母数字降序对文件名进行排序。我在 C 中编写了以下代码,但它仅按字母顺序排序,我猜是因为文件 A2 在 A11 之前被读取。我正在使用带有 alphasort 的 scandir

感谢您的帮助

   struct dirent **vl_lecture = NULL;
   DIR *vl_repertoire = NULL;
   //I open the directory with opendir
   vl_repertoire = opendir(vg_alias_rep_fichier.arr); 
   ...//code
   int n = scandir(vg_alias_rep_fichier.arr,&vl_lecture,NULL,alphasort);
   // I use while to perform some operations with file names ...

解决方法

fmap phi . n = n . fmap phi 按降序对字符串进行排序。这就是为什么你看到 A2 出现在 A11 之前。提供你自己的函数

alphasort

代码基于 implementation of alphasort