最近學到作業系統的檔案管理,研究了一下檔案查詢,**如下
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 原始檔 ...