c語言非遞歸遍歷文件夾,非遞歸層序遍歷

本文目錄一覽:

在windows下 怎麼用c語言遍歷文件夾?要用純c的

1、操作系統中有相關的API函數,可以讀取目錄中所有的文件名字,以及時間屬性信息,把這些信息讀出來,直接依次遍歷即可。

2、例程:

#include”stdio.h”

#include”io.h”

int main()

{

 struct _finddata_t files;

 int File_Handle;

 int i=0;

 File_Handle = _findfirst(“c:/temp/*.txt”,files);

 if(File_Handle==-1)

 {

 printf(“error\n”);

 return 0;

 }

 do

 {

 printf(“%s \n”,files.name);

 i++;

 }while(0==_findnext(File_Handle,files));

 _findclose(File_Handle);

 printf(“Find %d files\n”,i);

 return 0;

}

請我如何c語言遍歷文件夾

#include windows.h

/************************************************/

*參數說明:

char *pszDestPath為需要遍歷的目標路徑

/************************************************/

EnmuDirectory(char *pszDestPath)

{

//此結構說明參MSDN

WIN32_FIND_DATA FindFileData;

//查找文件的句柄

HANDLE hListFile;

//絕對路徑,例:c:\windows\system32\cmd.exe

char szFullPath[MAX_PATH];

//相對路徑

char szFilePath[MAX_PATH];

//構造相對路徑

wsprintf(szFilePath, “%s\\*”, pszDestPath);

//查找第一個文件,獲得查找句柄,如果FindFirstFile返回INVALID_HANDLE_VALUE則返回

if((hListFile = FindFirstFile(szFilePath, FindFileData)) == INVALID_HANDLE_VALUE)

{

//查找文件錯誤

return 1;

}

else

{

do

{

//過濾.和..

//“.”代表本級目錄“..”代表父級目錄

if( lstrcmp(FindFileData.cFileName, TEXT(“.”)) == 0 ||

lstrcmp(FindFileData.cFileName, TEXT(“..”)) == 0 )

{

continue;

}

//構造全路徑

wsprintf(szFullPath, “%s\\%s”, pszDestPath, FindFileData.cFileName);

//讀取文件屬性,如果不是文件夾

if(!(FindFileData.dwFileAttributes FILE_ATTRIBUTE_DIRECTORY))

{

//這裡你可以自己添加分析是某種類型文件的代碼。可以根據

//擴展名分析。

//這裡有個實例,你可以看看

//有必要初始化一下

char *pszFileType = NULL;

//把pszFileType指向cFileName的倒數第三個數符。因為一般擴展名長為3個字符。

//當然,你也可以用其它方法分析擴展名。或倒序查“.”

pszFileType = (FindFileData.cFileName[strlen(FindFileData.cFileName) – 3]);

//如果是jpg結尾的文件

if(!stricmp(pszFileType, “jpg”))

{

FILE *fp;

//或許這裡打開C:\\data.txt不應該用”w+”,你可試着來

fp = fopen(“c:\\data.txt”, “w+”);

if(fp) fputs(szFullPath, fp);

fclose(fp);

}

}

//如果是文件夾,則遞歸調用EnmuDirectory函數

if(FindFileData.dwFileAttributes FILE_ATTRIBUTE_DIRECTORY)

{

EnmuDirectory(szFullPath);

}

//循環,查找下一個文件

}while(FindNextFile(hListFile, FindFileData));

}

//關閉句柄

FindClose(hListFile);

//清空結構。可有可無的一句代碼。函數退出會自動清空。

ZeroMemory(FindFileData, sizeof(FindFileData));

return 0;

}

這是windows api版的,還有MFC版的和C版的。要的話來找我Q:503267714

如何在linux系統中用C語言編程實現以非遞歸的方式查詢指定目錄下所有子目錄的全部文件並保存文件名?

把迭代得到的非文件文件夾項,即子目錄保存到一個stack中。

隨後逐個彈出棧頂元素并迭代之,就實現了以非遞歸方式遍歷文件夾。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/312997.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-06 15:17
下一篇 2025-01-06 15:17

相關推薦

  • Idea新建文件夾沒有java class的解決方法

    如果你在Idea中新建了一個文件夾,卻沒有Java Class,應該如何解決呢?下面從多個方面來進行解答。 一、檢查Idea設置 首先,我們應該檢查Idea的設置是否正確。打開Id…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python遍歷集合中的元素

    本文將從多個方面詳細闡述Python遍歷集合中的元素方法。 一、for循環遍歷集合 Python中,使用for循環可以遍歷集合中的每個元素,代碼如下: my_set = {1, 2…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python如何遍歷字典中的key和value

    本文將詳細講解Python中如何遍歷字典中的key和value,包括多種遍歷方式以及在遍歷過程中的一些應用場景。 一、遍歷字典中的key和value 在Python中,字典是一種無…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 台階走法遞歸

    台階走法遞歸是一個經典的遞歸問題,在計算機算法中有着廣泛的應用。本篇文章將從遞歸的思想出發,詳細分析如何解決這個問題。 一、遞歸基礎知識 遞歸是指一個函數直接或間接地調用自身。遞歸…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29

發表回復

登錄後才能評論