作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试修改此文件https://github.com/HaarigerHarald/omxiv/blob/master/omxiv.c ,我认为是函数 getImageFilesInDir。我需要更改它,以便它不会按字母升序返回目录中的文件,而是按字母降序返回(img05.png,img04.png,img03.png,img02.png,img01.png),因此图像查看器将显示我是文件中编号最多的第一张图像(在我的例子中是 img05.png)
我尝试了类似 for(i=0; i-1; i--)
但没有帮助。请问有什么办法吗?
static int getImageFilesInDir(char ***list, const char* path){
struct dirent **namelist;
int imageNum;
imageNum = scandir(path, &namelist, imageFilter, alphasort);
if (imageNum < 0)
return imageNum;
else {
*list=malloc(sizeof(char*) *imageNum);
int i;
for(i=0; i<imageNum; i++) {
if(strcmp(path, ".") == 0 || strcmp(path, "./") == 0){
(*list)[i]= malloc(strlen(namelist[i]->d_name)+1);
strcpy((*list)[i], namelist[i]->d_name);
}else{
if(strrchr(path, '/')- path != strlen(path)-1){
(*list)[i]= malloc(strlen(path)+strlen(namelist[i]->d_name)+2);
strcpy((*list)[i],path);
(*list)[i][strlen(path)]='/';
strcpy((*list)[i]+strlen(path)+1,namelist[i]->d_name);
}else{
(*list)[i]= malloc(strlen(path)+strlen(namelist[i]->d_name)+1);
strcpy((*list)[i],path);
strcpy((*list)[i]+strlen(path),namelist[i]->d_name);
}
}
free(namelist[i]);
}
free(namelist);
}
return imageNum;
}
(这是我第一次接触C)
最佳答案
您只需为 scandir()
提供一个比较回调,该回调执行 alphasort()
所做的相反操作。您实际上可以直接否定 alphasort() 输出:
int descalphasort(const struct dirent **a, const struct dirent **b)
{
return - alphasort(a, b);
}
或者正如 @chux 所指出的,反转 alphasort()
参数:
int descalphasort(const struct dirent **a, const struct dirent **b)
{
return alphasort(b, a);
}
并在 scandir()
调用中使用 descalphasort
而不是 alphasort
。
关于c - 按字母降序对文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37974593/
序 大家好呀,我是summo,这次来写写我在上班空闲(摸鱼)的时候做的一个小网站的事。去年阿里云不是推出了个活动嘛,2核2G的云服务器一年只要99块钱,懂行的人应该知道这个价格在业界已经是非常良心了
我尝试根据给定的级别顺序(BFS 顺序)构造 BST。我知道这是可能的,但我不知道我该怎么写。问题是我必须使用 BFS 序列。所以,我不能在这里使用递归,我必须迭代地编写我的程序......我发现这有
我是一名优秀的程序员,十分优秀!