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

来源:互联网 发布:labview windows界面 编辑:程序博客网 时间:2024/06/11 08:37
#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_LEN128char 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 ;}

运行结果:


0 0
原创粉丝点击