每日一篇--获取文件夹下指定后缀的所有文件名


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


#define SUFFIX ".txt"
#define FILE_NAME_LEN 255
#define SUFFIX_LEN 20
typedef char (*file_name)[FILE_NAME_LEN];
typedef struct specfi_file
{
 int file_count;//文件总数
 char suffix[SUFFIX_LEN];//填充后缀名
 file_name *name;//存储文件名
}spfile;

int readSpecficFile(spfile *file,char *basePath)
{
    DIR *dir;
    struct dirent *ptr;
 
    if ((dir=opendir(basePath)) == NULL)
    {
        perror("Open dir error...");
        exit(1);
    }
 memset(file->suffix,'\0',sizeof(file->suffix));
 file->file_count = 0;
 strcpy(file->suffix,SUFFIX);
 while ((ptr=readdir(dir)) != NULL)
    {
        if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0)    ///current dir OR parrent dir
            continue;
        else if(ptr->d_type == 8)    ///file
        {
   char * p = strchr(ptr->d_name, '.');
   if(p != NULL)
   {
    if(!strcmp(p, file->suffix))
    {
     printf("d_name:%s\n",ptr->d_name);
     file->name[file->file_count] = (file_name )malloc(FILE_NAME_LEN);
     memset(file->name[file->file_count],'\0',strlen(ptr->d_name)+1);
     strcpy(file->name[file->file_count],ptr->d_name);
     file->file_count++;
    }
   }
        }
        else if(ptr->d_type == 10)    ///link file
            continue;
        else if(ptr->d_type == 4)    ///dir
           continue;
   
    }


    closedir(dir);
    return file->file_count;
}

int main(int argc,char *argv[])
{
 //generate_url_txt();
 //send_request();
 spfile sp;
 readSpecficFile(&sp,".");
 for(int i=0;i<sp.file_count;i++)
 {
  printf("file[i] = %s\n",sp.name[i]);
  free(sp.name[i]);
 }
 printf("sfsfsdf\n");
 return 0;
}

 

奇妙之二进制 CSDN认证博客专家 嵌入式优质创作者
专注于Linux C/C++、嵌入式Linux开发,偶尔谈谈人生,目前致力于完成大约500篇的linux C/C++开发知识体系库,所有的文章都会一直保持更新(优化内容、排版),想学习的可以订阅我的专栏,也可以关注二进制人生公众号。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:白松林 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值