欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c語言全盤搜索指定文件的實例代碼

 更新時間:2013年03月13日 23:28:46   作者:  
c語言全盤搜索指定文件的實例代碼,需要的朋友可以參考一下

復(fù)制代碼 代碼如下:

#include<stdio.h>
#include<windows.h>

void FindFile(char* ,char* );
int count=0;//統(tǒng)計文件數(shù)
char fname[32];
#define BUFSIZE 256
int main(int argc,char* argv[])
{
        char szLogicalDriveStrings[BUFSIZE];
    DWORD iLength;
    int iSub;
    printf("請輸入要搜索的文件名:");
    scanf("%s",fname);
    ZeroMemory(szLogicalDriveStrings, BUFSIZE);
    iLength = GetLogicalDriveStringsA(BUFSIZE-1, szLogicalDriveStrings);
    for(iSub=0; iSub<iLength; iSub+=4)
    {
    //如果不是固定磁盤驅(qū)動器:本地硬盤或移動硬盤,忽略
      if(GetDriveType(szLogicalDriveStrings+iSub)!=3)
            continue;
    FindFile(szLogicalDriveStrings+iSub,"*.*");
    }
    printf("一共發(fā)現(xiàn)%d個文件...\n",count);
    scanf("%*d");
    return 0;
}

void FindFile(char* pfilename,char* pfilter)
{
    WIN32_FIND_DATA findfiledate; 
    HANDLE hfind;
    char filename[512];
    char lpFileName[512];
    char _lpFileName[512];
    int i;
    int result;
    for(i=0;*(pfilename+i)!='\0';i++)
          filename[i]=*(pfilename+i);
    filename[i]='\0';
    //如果最后一個字符不是'\'
    if(filename[strlen(filename)-1]!='\\')
        strcat(filename,"\\"); //添加'\'
    strcpy(lpFileName,filename);
    strcat(lpFileName,pfilter);
    hfind=FindFirstFile(lpFileName,&findfiledate);
    if(hfind==INVALID_HANDLE_VALUE)
        return;
    do
    {
        //如果不是目錄
        if(!(findfiledate.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))
        {
            //如果找到指定文件
            if(0==strcmp(fname,findfiledate.cFileName))
           {
               printf("%s%s\n",filename,findfiledate.cFileName);
                 count++;
            }
        }
        //如果是目錄
        else
        {
            //.和..不輸出
            if(findfiledate.cFileName[0]!='.')
            {
                strcpy(_lpFileName,filename);
                strcat(_lpFileName,findfiledate.cFileName);
                FindFile(_lpFileName,pfilter);  //遞歸
            }
        }
    }while(FindNextFile(hfind,&findfiledate));//FindNextFile返回為真,繼續(xù)搜索
    FindClose(hfind);
    return;
}

 

使用遞歸來搜索文件,效率低,使用多線程效果更好。

 

相關(guān)文章

  • C++實現(xiàn)LeetCode(12.整數(shù)轉(zhuǎn)化成羅馬數(shù)字)

    C++實現(xiàn)LeetCode(12.整數(shù)轉(zhuǎn)化成羅馬數(shù)字)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(12.整數(shù)轉(zhuǎn)化成羅馬數(shù)字),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Qt 使用QDialog實現(xiàn)界面遮罩的示例(蒙版)

    Qt 使用QDialog實現(xiàn)界面遮罩的示例(蒙版)

    界面遮罩在很多時候都可以用到,例如彈窗,本文主要介紹了Qt 使用QDialog實現(xiàn)界面遮罩的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • C/C++指針小結(jié)

    C/C++指針小結(jié)

    要搞清一個指針需要搞清指針的四方面的內(nèi)容:指針的類型,指針?biāo)赶虻念愋停羔樀闹祷蛘呓兄羔標(biāo)赶虻膬?nèi)存區(qū),還有指針本身所占據(jù)的內(nèi)存區(qū)
    2013-09-09
  • C語言?模擬實現(xiàn)strlen函數(shù)詳解

    C語言?模擬實現(xiàn)strlen函數(shù)詳解

    在 C 語言 中我們要獲取 字符串 的長度,可以使用strlen 函數(shù),strlen 函數(shù)計算字符串的長度時,直到空結(jié)束字符,但不包括空結(jié)束字符,因為 strlen 函數(shù)時不包含最后的結(jié)束字符的,因此一般使用 strlen函數(shù)計算的字符串的長度會比使用 sizeof 計算的字符串的字節(jié)數(shù)要小
    2022-04-04
  • 關(guān)于C++中虛擬繼承的一些總結(jié)分析

    關(guān)于C++中虛擬繼承的一些總結(jié)分析

    虛擬繼承在一般的應(yīng)用中很少用到,所以也往往被忽視,這也主要是因為在C++中,多重繼承是不推薦的,也并不常用
    2013-09-09
  • C/C++ Qt TreeWidget 嵌套節(jié)點操作使用

    C/C++ Qt TreeWidget 嵌套節(jié)點操作使用

    本文主要介紹了TreeWidget的如何使用,實現(xiàn)對樹形框多節(jié)點的各種操作,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Android App仿微信界面切換時Tab圖標(biāo)變色效果的制作方法

    Android App仿微信界面切換時Tab圖標(biāo)變色效果的制作方法

    這篇文章主要介紹了Android App仿微信界面切換時Tab圖標(biāo)變色效果的制作方法,重點講解了圖標(biāo)的繪制技巧,需要的朋友可以參考下
    2016-04-04
  • 詳解原碼、反碼與補碼存儲與大小

    詳解原碼、反碼與補碼存儲與大小

    這篇文章主要介紹了詳解原碼、反碼與補碼存儲與大小的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++繼承的定義與注意事項

    C++繼承的定義與注意事項

    這篇文章主要給大家介紹了關(guān)于C++繼承的定義與注意事項的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 一篇文章帶你了解C語言內(nèi)存對齊公式

    一篇文章帶你了解C語言內(nèi)存對齊公式

    這篇文章主要介紹了C語言內(nèi)存對齊,包括內(nèi)存對其的基本概念及用法,以及注意事項,并以實例形式加以說明,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08

最新評論