2007年8月16日16時26トラバースファイルとフォルダのディレクトリ

これは、私が特別に出てくると共有する、ディレクトリを横断する小さなプログラムを書いたものです。

//複数のヘッダファイルが必要

書式#include <WINDOWS.H>

書式#include <stdio.hに>

書式#include <stdlib.h>に含ま

書式#include <iostreamの>

/ **

*特徴:深さを実現トラバースディレクトリとファイル

*パラメータ:CHAR *、それが入ってくるの開始を横断するパスであることを意味します

*戻り値の型:無効

** /

ボイドFindFileAndDirectory(チャー*パス)
{
 文字ファイルパス[MAX_PATH] = {0}。
 WIN32_FIND_DATA FindData;
 FindHandleをHANDLE。
 ZeroMemory(&FindData、はsizeof(WIN32_FIND_DATA))。
 strcpyの(ファイルパス、パス)。
 IF(ファイルパス[strlenを(ファイルパス) - 1] = '\\'!)
 {
  STRCAT(ファイルパス、 "\\")。
 }
 STRCAT(ファイルパス、 "*")。
 FindHandle = FindFirstFile(ファイルパス、&​​FindData)。
 (FindHandle == INVALID_HANDLE_VALUE)の場合
 {
  裁判所未満<< "!查找失败、程序退出" <<てendl;
  返します。
 }
 行う
 {
  IF((FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
   &&のstrcmp(FindData.cFileName、 "")
   &
  {
   チャーTEMPPATH [MAX_PATH] = {0}。
   strcpyの(TEMPPATH、パス);
   IF(TEMPPATH [strlenを(TEMPPATH) - 1] = '\\'!)
   {
    STRCAT(TEMPPATH、 "\\")。
   }
   STRCAT(TEMPPATH、FindData.cFileName)。
   裁判所未満<< "パスは次のとおりです。" << TEMPPATH <<てendl;
   FindFileAndDirectory(TEMPPATH)。
  }
  そうであれば( ""のstrcmp(FindData.cFileName)&&のstrcmp(FindData.cFileName、 ".."))
  {
   チャーTEMPPATH [MAX_PATH] = {0}。
   strcpyの(TEMPPATH、パス);
   TEMPPATH [strlenを(TEMPPATH) - 1] = 0。
   STRCAT(TEMPPATH、FindData.cFileName)。
   裁判所未満<< "ファイルです:" << TEMPPATH <<てendl;
  }
 }一方(FindNextFile(FindHandle、&FindData))。
 FindClose(FindHandle)。
}

受信ファイルはバックパスには、すべてのフォルダとファイルを横断したとき。私たちは、議論することができます興味を持っています。

 

 

これは、Cの新バージョンです++

書式#include <iostreamの>
の#include <io.h>
std名前空間を使用しました。

#define BUF_SIZE 256

ボイドfindfileanddirectory(チャー*パス)
{
 FILEDATA _finddata_t。
 長いLF;
 チャーLPATH [256] = {0}。
 strcpyの(LPATH、パス);
 IF(!LPATH [STRLEN(LPATH) - 1] = '\\')
 {
  STRCAT(LPATH、 "\\")。
 }
 STRCAT(LPATH、 "*。*");
 LF = _findfirst(LPATH、&FILEDATA)。
 もし(LF == -1)
 {
  coutの<< "查找文件失败、返回!" <<てendl;
  返します。
 }
 行う
 {
  ((filedata.attrib&_A_SUBDIR)&&のstrcmp(filedata.name)&&のstrcmp(filedata.name、 "..") "")であれば
  {  
   チャーbufpath [BUF_SIZE] = {0}。
   strcpyの(bufpath、パス);
   もし(bufpath [strlenを(bufpath) - 1]!= '


   }
   STRCAT(bufpath、filedata.name)。
   裁判所未満<< "パスは次のとおりです。" << bufpath <<てendl;
   findfileanddirectory(bufpath)。
  }
  他( ""のstrcmp(filedata.name)&&のstrcmp(filedata.name、 ".."))であれば
  {
   チャーbufpath [BUF_SIZE] = {0}。
   strcpyの(bufpath、パス);
   IF(bufpath [strlenを(bufpath) - 1] = '\\'!)
   {
    STRCAT(bufpath、 "\\")。
   }
   STRCAT(bufpath、filedata.name)。
   裁判所未満<< "パスは次のとおりです。" << bufpath <<てendl;
  }
 }一方(_findnext(LF、&FILEDATA)== 0)。
 _findclose(LF)。
}

おすすめ

転載: www.cnblogs.com/lu-ping-yin/p/10988607.html