1. 程式人生 > >c語言獲取目錄下的所有檔名

c語言獲取目錄下的所有檔名

利用C語言獲取目錄下所有的檔名,並將目錄下的檔名輸出到TXT檔案中;
利用_findfirst和_findnext函式進行遍歷查詢;
小程式下載:
#include<time.h>
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include <stdlib.h>
#include <windows.h>
#include <direct.h>
//#pragma  comment(lib,"ws2_32.lib")
#include <io.h>
FILE *fp = NULL; void view(char *FileAddr) { struct _finddata_t file; //定義結構體變數 long handle; int iRetVal = 0; FILE *pf = NULL; char cFileAddr[300]; strcpy(cFileAddr, FileAddr); _chdir(FileAddr); strcat(cFileAddr, "*.*"); handle = _findfirst(cFileAddr, &file);//查詢所有檔案
if (handle == -1)//如果handle為-1, 表示當前目錄為空, 則結束查詢而返回如果handle為-1, 表示當前目錄為空, 則結束查詢而返回 return; else { if (file.attrib &_A_SUBDIR) //是目錄 { if (file.name[0] != '.') //檔名不是'.'或'..'時 { memset(cFileAddr, 0, sizeof(cFileAddr)); _chdir(file.name); //進入該目錄
printf("%s\n",file.name);// fprintf(fp,"%s\n" ,file.name); _chdir("..");//查查詢完畢之後, 返回上一級目錄找完畢之後, 返回                 上一級目錄 } } while (!(_findnext(handle, &file))) { if (file.attrib &_A_SUBDIR) //是目錄 { if (file.name[0] != '.') //檔名不是'.'或'..'時 { memset(cFileAddr, 0, sizeof(cFileAddr)); _chdir(file.name); //進入該目錄 printf("%s\n",file.name);// add--- fprintf(fp,"%s\n" ,file.name); _chdir("..");//查查詢完畢之後, 返回上一級目錄找完畢之後, 返回                 上一級目錄 } } } _findclose(handle); } return; } main() { int i=0; char FileAddr[50]; time_t start,end;/*定義time_t型別變數start,end*/ printf("please input file path:\n"); scanf("%s", FileAddr); puts(FileAddr); fp = fopen("aa.txt", "w"); if(fp ==NULL) printf("開啟檔案aa.txt失敗\n"); start=time(NULL);/*將當前時間賦給start*/ view(FileAddr); end=time(NULL);/*將中斷後的當前時間賦給end*/ printf("runtime is:%f(s)\n",difftime(end,start));/*呼叫difftime函式,從start到end說經過的時間*/ fclose(fp); _getch(); }