Linux系统编程:标准IO操作--索引对应路径下的文件

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h> 
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#define MAX_FILE_NUM 128
#define MAX_PATH_LEN				128
char file_path[MAX_FILE_NUM][MAX_PATH_LEN];
char *pFilePath[MAX_FILE_NUM];
int total_file_num = 0;
//排序文件 
void SortFilePath(void)
{
	char *pTemp;
	int i, j, k;
	for (i=0; i<MAX_FILE_NUM && file_path[i]; i++)
		pFilePath[i] = file_path[i];
			
	for (i=0; i<total_file_num-1; i++)
	{
		if (pFilePath[i] == 0)
			break;
		k = i;
		for (j=i+1; j<total_file_num; j++)
			if (strcmp(pFilePath[k], pFilePath[j]) > 0)
				k = j;
		if (k != i)
		{
			pTemp = pFilePath[i];
			pFilePath[i] = pFilePath[k];
			pFilePath[k] = pTemp;
		}
	}
}
//判断文件路径是否存在 
int is_path_exist(const char *root)
{
    DIR *dir;

    dir = opendir(root);
    if (dir == NULL){
    	printf("error!\n");
        return -1;
	}
	closedir(dir);
	
	return 0;
}
//返回该目录下文件的个数 
int get_file_path(const char *root)
{
	int count, status, len;
    DIR *dir;
    struct dirent *ptr;
    dir = opendir(root);
    if (dir == NULL)
	{
        printf("fail to open dir:%s\n", root);
        return -1;
    }
	count=0;
	chdir(root);
    while ((ptr = readdir(dir)) != NULL)
	{
		if (strcmp(ptr->d_name,".") ==0 || strcmp(ptr->d_name,"..")==0) //后面还可以加一个选项,排除文件夹
            continue;
		strcpy(file_path[count], ptr->d_name);
		printf("mount: %s  success!\n",ptr->d_name);
		count++;
		if (count == MAX_FILE_NUM)
			break;
    }
    closedir(dir);
	return count;
}


int main(void)
{
	char *name = "C:/Users/se0803/Desktop/test";
	struct dirent *ptr;
	int ret = is_path_exist(name);
	if(0 == ret)
	  printf("path exist!\n");	
	int total_file_num = get_file_path(name);
	printf("total_file_num:%d\n",total_file_num);
	SortFilePath();
	return 0 ;
}

运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值