c語言實現檔案查詢

2021-08-02 07:47:51 字數 2467 閱讀 3250

最近學到作業系統的檔案管理,研究了一下檔案查詢,**如下

1.完整版(老師給出的示例**)

#include "windows.h"

#include "stdio.h"

int num=0;

void find(char *path,char *name)

findclose(hfind);

}sprintf(szfind,"%s\\*.*",path);

hfind=findfirstfile(szfind,&fd);

if(invalid_handle_value==hfind)return;

while(true)

}if(!findnextfile(hfind,&fd))break;

}findclose(hfind);

}int main()

; char name="pra*.*";

//獲取邏輯驅動器號字串

dword dwresult = getlogicaldrivestrings(dwsize,szlogicaldrives);

//處理獲取到的結果

if (dwresult > 0 && dwresult <= max_path)

szsingledrive += strlen(szsingledrive) + 1;}}

return 0;

}

2.分析

///獲取碟符

dword dwsize = max_path;

char szlogicaldrives[max_path] = ;//獲取邏輯驅動器號字串

dword dwresult =getlogicaldrivestrings(dwsize,szlogicaldrives);

char* szsingledrive =szlogicaldrives;  //從緩衝區起始位址開始

while(* szsingledrive)

///獲取當前目錄下目標檔案

char szfind[max_path];

win32_find_data fd;

sprintf(szfind,"%s\\%s",path,name);

handlehfind=findfirstfile(szfind,&fd);

if(invalid_handle_value!=hfind)

while(1)

printf("\n%s\\%s\n",path,fd.cfilename);

num++;

if(!findnextfile(hfind,&fd))break;

findclose(hfind);

///獲取目錄

sprintf(szfind,"%s\\*.*",path);

hfind=findfirstfile(szfind,&fd);

if(invalid_handle_value==hfind)return0;

while(true)

if(fd.dwfileattributes&file_attribute_directory)

if(fd.cfilename[0]!='.')

sprintf(szfile,"%s\\%s",path,fd.cfilename);

find(szfile,name);//

遞迴呼叫

if(!findnextfile(hfind,&fd))break;

findclose(hfind);

3.知識點:

碟符的型別很多,可以用getdrivetype(當前碟符)【getdrivetype(szsingledrive)】獲取

檔案: findfirstfile(szfind,&fd)與findnextfile(hfind,&fd),可以用或者判定前者是否結束

win32_find_data,該結構的內容如下:

typedef struct _win32_find_data win32_find_data, *pwin32_find_data;

#define file_attribute_directory  0x00000010  資料夾 第5位

判斷是檔案還是目錄

fd.dwfileattributes&file_attribute_directory   &:相同為1,不同為0

if(fd.dwfileattributes&file_attribute_directory)運算為1就是資料夾,0為檔案

if(fd.cfilename[0]!='.')  .表示當前路徑,..表示後退一布路徑

4.簡單檔案查詢(根據windows自帶的檔案查詢命令簡化)

#include #include #include int main()

return 0;

}

C語言實現順序查詢

核心 從資料的第乙個元素開始,依次比較,直到找到目標資料或查詢失敗。1.從表中的第乙個元素開始,依次與關鍵字比較。2.若某個元素匹配關鍵字,則 查詢成功。3.若查詢到最後乙個元素還未匹配關鍵字,則 查詢失敗。順序查詢對錶中元素的排序無要求,這些元素在表中可以任意排序,這使得順序查詢的適應性很高。順序...

陣列查詢 C 語言實現

本文主要包含常見的陣列查詢方法。線性查詢是最為簡單粗暴的查詢方法了,直接從陣列首元素開始查詢,直到找到要查詢的元素為止。include include int linesearch int p,int length,int search int binarysearch int p,int low,...

C語言實現檔案複製

使用c語言來複製乙個檔案 包括各種型別 主流的做法有2種 1.自定義函式 2.呼叫系統api 本文介紹自定義函式的方法。檔案型別可以粗略分類為ascii型別和二進位制型別,且大多數為二進位制型別,因此本文採用 fread 和 fwrite 閒話不多說,上 c語言實現檔案複製 srcfile 原始檔 ...