c语言遍历文件夹中的文件

文件目录如下,文件夹里还有一些txt文件未展示出来。

使用递归实现,深度优先遍历文件夹中的文件。

代码如下,用了一点C++的语法。

cpp 复制代码
#include <io.h>
#include <iostream>  
using namespace std;

#define MAX_PATH_LENGTH 100

int Traverse(char dir[]);

int main()
{
    char dir[MAX_PATH_LENGTH] = "e:\\test\\*.*";

    Traverse(dir);

    return 0;
}

int Traverse(char dir[])
{
    intptr_t handle;
    _finddata_t findData;

    handle = _findfirst(dir, &findData);
    if (handle == -1)
    {
        cout << "no file exsit\n";
        return -1;
    }

    do
    {
        if ((findData.attrib & _A_SUBDIR) && (strcmp(findData.name, ".") != 0) && (strcmp(findData.name, "..") != 0))
        {
            //it is a directory
            cout << "subdir:" << findData.name << endl;
            char sub_dir[MAX_PATH_LENGTH] = { 0 };
            string s(dir);
            sprintf_s(sub_dir, "%s%s\\*.*", s.substr(0, s.length() - 3).c_str(), findData.name);
            Traverse(sub_dir);
        }
        else if (strcmp(findData.name, ".") == 0 || strcmp(findData.name, "..") == 0)
        {
            //it is . or .. , do nothing
        }
        else
        {
            //it is a file
            cout << "file:" << findData.name << endl;
        }
    } while (_findnext(handle, &findData) == 0);

    _findclose(handle);
}

运行结果如下:

相关推荐
饮啦冰美式2 分钟前
PPO近端策略优化算法
人工智能·深度学习·算法
void_sk11 分钟前
C/C++复习--C语言中的函数详细
c语言·c++·算法
晨曦学习日记15 分钟前
C++学习笔记
c++·笔记·学习
evolution_language22 分钟前
LintCode第485题-生成给定大小的数组,第220题-冰雹猜想,第235题-分解质因数
数据结构·算法·新手必刷编程50题
李匠20241 小时前
C++GO语言微服务之gorm框架操作MySQL
开发语言·c++·后端·golang
越甲八千1 小时前
通俗的理解MFC消息机制
c++·mfc
钢铁男儿1 小时前
C# 方法(参数数组)
java·算法·c#
千里镜宵烛1 小时前
C++ 哈希表
开发语言·数据结构·c++·哈希算法·散列表
努力学习的小廉1 小时前
【C++】 —— 笔试刷题day_27
开发语言·c++
双叶8361 小时前
(51单片机)LCD显示红外遥控相关数字(Delay延时函数)(LCD1602教程)(Int0和Timer0外部中断教程)(IR红外遥控模块教程)
c语言·数据库·c++·单片机·嵌入式硬件·mongodb·51单片机