當前位置:首頁 » 文件管理 » c查找文件夾

c查找文件夾

發布時間: 2023-01-03 21:48:46

c語言怎麼讀取某一文件夾下的所有文件夾和文件

讀取的代碼方式如下:

intmain()

{

longfile;

struct_finddata_tfind;

_chdir("d:\");

if((file=_findfirst("*.*",&find))==-1L)

{

printf("空白! ");

exit(0);

}

printf("%s ",find.name);

while(_findnext(file,&find)==0)

{

printf("%s ",find.name);

}

_findclose(file);

return0;

}

② c++中如何搜索一個目錄下面所有文件夾名,

據我了解C++中沒有這樣的函數,但是你可以自己寫一個這樣的函數
1. 首先判斷你的參數是一個文件還是一個路徑
2. 如果是一個文件,直接遞歸的查找,並且返迴路徑
3. 如果是目錄,首先遞歸的查找文件夾,找到文件夾之後判斷文件夾中是否有這樣的文件,如果有返回找到的路徑,沒有就返回false

③ c語言 怎麼查找 當前目錄有哪些 文件

在命令提示符窗口運行:findfile (盤符): *.(文件後綴)
如:[sourcecode language=」plain」]findfile d: *.txt [/sourcecode]
即為找出d盤根目錄下的所有.txt後綴的文件並寫入文件路徑於文件中。

④ c語言實驗:查找c盤中的所有文件夾,對於子文件夾中的文件也要進行查找輸出。

優化了一下,但還是有bug,需要細查
#include<io.h>
#include<stdio.h>
#include<string.h>
#define_A_SUBDIR0x10/*Subdirectory*/

voidsearch(char*str1)
{
longflag1=0;
longhandle1;
chars1[]="\",s2[]="*.*",s3[100],name[100];
struct_finddata_tffblk1;

strcat(str1,s1);strcpy(s3,str1);strcat(str1,s2);
handle1=_findfirst(str1,&ffblk1);
while(!flag1)
{
if(strcmp(ffblk1.name,".")&&strcmp(ffblk1.name,".."))
{
if(ffblk1.attrib==_A_SUBDIR){
printf("%sisasub-directory ",ffblk1.name);
strcpy(name,ffblk1.name);
strcat(s3,name);
search(s3);
}
else{
printf("%s ",ffblk1.name);
}
}
flag1=_findnext(handle1,&ffblk1);
}
}

voidmain()
{
// struct_finddata_tffblk;
charstr[200]="C:";//必須是數組,不然空間不夠
search(str);
}

⑤ c++語言編程:怎樣全盤搜索一個已知文件名的文件夾,並得到該文件夾的路徑。

void CFileScanRollDlg::BrowsDir(CString strDir)
{
CFileFind files;
CString szDir=strDir;
if(szDir.Right(1) != "\\")
szDir+="\\";
szDir+="*.*";
BOOL res=files.FindFile(szDir);//查找目錄
while(res)
{
Doevents();
res=files.FindNextFile();
if(files.IsDirectory() && !files.IsDots())//如果是一個子目錄,用遞歸繼續往深一層找
{
//這里判斷是不是你要的目錄
BrowsDir(files.GetFilePath());
}
else if(!files.IsDirectory() && !files.IsDots())
{
CString str=strDir;
str=str+"\\"+files.GetFileName();
//在這里判斷是不是你要的文件名稱
Sleep(20);
}
}
files.Close();
}
void CFileScanRollDlg::Doevents()//開辟線程避免假死狀態
{
MSG msg;
if (PeekMessage(&msg, NULL, 0,0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

⑥ 如何用C語言獲取目錄下的文件和目錄列表

1、可以利用getenv函數來實現。
在Linux系統中,home目錄的定義是通過系統環境變數中的HOME變數值來確定的,在shell下可以通過
echo $HOME來查看。
而在C語言中,庫函數getenv可以用作獲取環境變數值。該函數位於stdlib.h, 原型為
char *getenv(char *name);
功能為獲取名字為name的環境變數字元串。
所以,下面代碼就可以獲取到home目錄名了:
2、常式:
char *home;
home = getenv("HOME");
printf("the home path is %s\n", home);

⑦ 請我如何c語言遍歷文件夾

#include <windows.h>

/************************************************/
*參數說明:
char *pszDestPath為需要遍歷的目標路徑
/************************************************/

EnmuDirectory(char *pszDestPath)
{
//此結構說明參MSDN
WIN32_FIND_DATA FindFileData;
//查找文件的句柄
HANDLE hListFile;
//絕對路徑,例:c:\windows\system32\cmd.exe
char szFullPath[MAX_PATH];
//相對路徑
char szFilePath[MAX_PATH];
//構造相對路徑
wsprintf(szFilePath, "%s\\*", pszDestPath);
//查找第一個文件,獲得查找句柄,如果FindFirstFile返回INVALID_HANDLE_VALUE則返回
if((hListFile = FindFirstFile(szFilePath, &FindFileData)) == INVALID_HANDLE_VALUE)
{
//查找文件錯誤
return 1;
}
else
{
do
{
//過濾.和..
//「.」代表本級目錄「..」代表父級目錄
if( lstrcmp(FindFileData.cFileName, TEXT(".")) == 0 ||
lstrcmp(FindFileData.cFileName, TEXT("..")) == 0 )
{
continue;
}
//構造全路徑
wsprintf(szFullPath, "%s\\%s", pszDestPath, FindFileData.cFileName);
//讀取文件屬性,如果不是文件夾
if(!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
//這里你可以自己添加分析是某種類型文件的代碼。可以根據
//擴展名分析。

//這里有個實例,你可以看看

//有必要初始化一下
char *pszFileType = NULL;
//把pszFileType指向cFileName的倒數第三個數符。因為一般擴展名長為3個字元。
//當然,你也可以用其它方法分析擴展名。或倒序查「.」
pszFileType = &(FindFileData.cFileName[strlen(FindFileData.cFileName) - 3]);
//如果是jpg結尾的文件
if(!stricmp(pszFileType, "jpg"))
{
FILE *fp;
//或許這里打開C:\\data.txt不應該用"w+",你可試著來
fp = fopen("c:\\data.txt", "w+");
if(fp) fputs(szFullPath, fp);
fclose(fp);
}

}

//如果是文件夾,則遞歸調用EnmuDirectory函數
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
EnmuDirectory(szFullPath);
}
//循環,查找下一個文件
}while(FindNextFile(hListFile, &FindFileData));
}
//關閉句柄
FindClose(hListFile);
//清空結構。可有可無的一句代碼。函數退出會自動清空。
ZeroMemory(&FindFileData, sizeof(FindFileData));
return 0;
}

這是windows api版的,還有MFC版的和C版的。要的話來找我Q:503267714

⑧ VC環境中用C語言查找當前路徑下的所有文件和文件夾的函數是什麼

這是我的TFTP程序中的一個函數,是搜索當前盤符下的所有文件,包括文件的大小,並發送到客戶端,其中就有查找當前路徑下的文件,你自己挑一下,應該能完成你的需求。
void FileList(sockaddr_in sour_addr,char strStartDir[])
{
char sendbuffer[1024];
sockaddr_in destaddr;

int sourlen = 0;
int ret = 0;
int len = 0;
int flen = 0;

fd_set fdr;

unsigned short blocknum = 0;

FILE *file;
char filename[128];

strcpy(filename,strStartDir+2); /*獲取文件名*/

strcat(filename,"\\*");
destaddr.sin_family = AF_INET;
destaddr.sin_port = sour_addr.sin_port;
destaddr.sin_addr.s_addr = inet_addr(desthost);//

WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile(filename, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("Invalid File Handle");
}
else
{
while(FindNextFile(hFind,&FindFileData))
{
printf(FindFileData.cFileName);
printf("\r\n");
memset(sendbuffer,'\0',1024);

len = filldata(blocknum++,FindFileData.cFileName,strlen(FindFileData.cFileName),sendbuffer,sizeof(sendbuffer));
ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)&destaddr,sizeof(destaddr));

}
len = fillover(blocknum,"Over",4,sendbuffer,sizeof(sendbuffer));
ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)&destaddr,sizeof(destaddr));
FindClose(hFind);
return;
}
}

熱點內容
kmp手機ftp 發布:2025-08-27 06:09:57 瀏覽:760
如何編寫sql的lua腳本 發布:2025-08-27 05:50:30 瀏覽:917
ultraedit反編譯 發布:2025-08-27 05:48:15 瀏覽:838
電源編程 發布:2025-08-27 05:42:18 瀏覽:625
mysql存儲過程elseif 發布:2025-08-27 05:20:02 瀏覽:148
python的內存機制 發布:2025-08-27 05:19:29 瀏覽:426
如何反編譯通達信 發布:2025-08-27 05:02:01 瀏覽:703
網吧停電後怎麼重啟伺服器 發布:2025-08-27 05:01:20 瀏覽:955
宣傳片創意文案和腳本 發布:2025-08-27 04:48:41 瀏覽:29
c語言產生不同隨機數 發布:2025-08-27 04:12:32 瀏覽:179