c語言獲取目錄下的所有檔名
阿新 • • 發佈:2019-01-09
利用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();
}