linux下读取指定目录下的文件名,并进行排序

来源:互联网 发布:算法第四版英文 pdf 编辑:程序博客网 时间:2024/04/28 19:30

用的工具有vi,gcc,make

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<dirent.h>


int main(int argc, char *argv[])
{
        if(argc < 2)
                return 0;


        DIR *dp;
        struct dirent *dirp;
        dp = opendir(argv[1]);


        if(dp == NULL)
        {
                printf("error is %s\n",strerror(errno));
                return 0;
        }
        else
        {
                int count = 0;

char *filename[20]={0}; //目录下文件数也许不止20个可以自己修改,或者在下面的while里面先统计出具体文件数都可以


                while((dirp = readdir(dp)) != NULL)
                {
                        filename[count] = dirp->d_name;
                        count++;
                        printf("%s\n",dirp->d_name);
                }


                printf("----------sqrt----------\n");


                int i,j;
                for(i = 0; i < count; i++) //偷懒了,用的是冒泡法排序
                {
                        for(j = 0; j < count; j++)
                        {
                                if(strcmp(filename[i] , filename[j]) < 0)
                                {
                                        char *temp = filename[i];
                                        filename[i] = filename[j];
                                        filename[j] = temp;
                                }

 }
                }

        for(i = 0; i < count; i++)
                printf("%s\n",filename[i]);
        }


        closedir(dp);
        return 0;

}

make文件如下:

.SUFFIXES:.c .o


CC=gcc
SRCS=d.c
EXEC=d


OBJS=$(SRCS:.c=.o)


start:$(OBJS)
        $(CC) -o $(EXEC) $(OBJS)
        @echo '----------OK----------'
.c.o:
        $(CC) -g -o $@ -c $<


clean:
        rm -f $(OBJS)

给个结果大家看看:

[fanliming@localhost 0429]$ d /home/fanliming/0503 //这是我自己的一个小目录,先搜索后排序,效果不错。
d.c
a
a.c
c
b
d
b.c
makefile
.
c.c
..
----------sqrt----------
.
..
a
a.c
b
b.c
c
c.c
d
d.c
makefile
[fanliming@localhost 0429]$ 

0 0
原创粉丝点击