本文目錄一覽:
- 1、如何獲取目錄下所有文件名 c++
- 2、c語言讀取文件名問題
- 3、獲取當前目錄下所有文件名函數 c語言
- 4、c語言 怎樣獲取文件夾中的所有文件
- 5、如何用c語言獲得一個目錄下所有文件的文件名?
- 6、c語言 讀取目錄中的文件名,並將其存入數組中
如何獲取目錄下所有文件名 c++
以下程序只能在Windows下運行,完全按照c語言編寫。但是添加了windows.h庫。以下程序在Visual C++ 2008下編譯通過。
#undef UNICODE // 如果你不知道什麼意思,請不要修改
#define MAX_RESULT 256
#include stdio.h
#include stdlib.h
#include Windows.h
char** EnumFiles(const char *directory, int *count)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
char result[MAX_RESULT][MAX_PATH];
char **returnresult;
char pattern[MAX_PATH];
int i = 0, j;
// 開始查找
strcpy(pattern, directory);
strcat(pattern, “\\*.*”);
hFind = FindFirstFile(pattern, FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
*count = 0;
return NULL;
}
else
{
do
{
strcpy(result[i++], FindFileData.cFileName);
}
while (FindNextFile(hFind, FindFileData) != 0);
}
// 查找結束
FindClose(hFind);
// 複製到結果中
returnresult = (char **)calloc(i, sizeof(char *));
for (j = 0; j i; j++)
{
returnresult[j] = (char *)calloc(MAX_PATH, sizeof(char));
strcpy(returnresult[j], result[j]);
}
*count = i;
return returnresult;
}
void main()
{
int i, count;
char ** result;
char directory[MAX_PATH];
printf(“請輸入要查詢的文件夾:”);
scanf(“%s”, directory);
result = EnumFiles(directory, count);
for (i = 0; i count; i++)
printf(“%s\n”, result[i]);
}
c語言讀取文件名問題
用C語言讀取目錄中的文件名的方法:
1、如果是在window環境下,可以用一下方法:
使用stdlib.h頭文件聲明的system()函數
_CRTIMP int __cdecl system (const char*);
system(“dir c:\\ /a:h /b c:\\dir.txt”);
調用系統命令dir,把c:目錄下文件列表寫入文件dir.txt中
2、使用dirent.h頭文件中聲明的opendir(),readdir()函數;
int main(int argc, char *argv[])
{
DIR *directory_pointer;
struct dirent *entry;
if((directory_pointer=opendir(“d:\\XL”))==NULL)
printf( “Error opening \n “);
else
{
while((entry=readdir(directory_pointer))!=NULL)
{
printf(“%s\n”,entry- d_name);
}
closedir(directory_pointer);
}
system(“PAUSE”);
return 0;
}
3、如果沒有dirent.h,可以使用io.h頭文件中聲明的_findfirst(),_findnext()函數;
示例代碼:
int main(int argc, char *argv[])
{
long file;
struct _finddata_t find;
_chdir(“d:\\”);
if((file=_findfirst(“*.*”, find))==-1L)
{
printf(“空白!\n”);
exit(0);
}
printf(“%s\n”, find.name);
while(_findnext(file, find)==0)
{
printf(“%s\n”, find.name);
}
_findclose(file);
system(“PAUSE”);
return 0;
}
獲取當前目錄下所有文件名函數 c語言
system(“attrib -s -h”); // 如果需要顯示系統文件和隱藏文件
system(“DIR /b file_list.txt”); // 文件名存入 文件 file_list.txt
/b — 只取 文件名
c語言 怎樣獲取文件夾中的所有文件
較簡單的是用DOS命令 DIR 並轉向到一個文件,再打開文件讀出一個一個文件名。
例如:
char my_cmd[80] = “DIR/B/A-D D:\\USER\\WANG abc.lis”;
system( cmd);
你就獲得D:\\USER\\WANG 文件夾中的所有文件,選項意思是 只列 文件名,並按字母排列。
abc.lis 轉向,存入文件 abc.lis
接着,你可以 用FILE *fp; fp = fopen(“abc.lis”,”r”); 打開文件
用 fgets() 讀文件名。
如何用c語言獲得一個目錄下所有文件的文件名?
void enum_path(char *cpath){
WIN32_FIND_DATA wfd;
HANDLE hfd;
char cdir[MAX_PATH];
char subdir[MAX_PATH];
int r;
GetCurrentDirectory(MAX_PATH,cdir);
SetCurrentDirectory(cpath);
hfd = FindFirstFile(“*.*”,wfd);
if(hfd!=INVALID_HANDLE_VALUE) {
do{
if(wfd.dwFileAttributes FILE_ATTRIBUTE_DIRECTORY)
{
if(wfd.cFileName[0] != ‘.’) {
// 合成完整路徑名
sprintf(subdir,”%s\\%s”,cpath,wfd.cFileName);
// 遞歸枚舉子目錄
enum_path(subdir);
}
}else{
printf(“%s\\%s\n”,cpath,wfd.cFileName);
// 病毒可根據後綴名判斷是
// 否要感染相應的文件
}
}while(r=FindNextFile(hfd,wfd),r!=0);
}
SetCurrentDirectory(cdir);
}
c語言 讀取目錄中的文件名,並將其存入數組中
用system 調用 DOS DIR 命令就可以了:
system ( “dir sss_* /B log.txt”);
這就把 前綴為sss_的文件 文件名 存入 log.txt 文件了。
一個名字一行,沒有別的東西。
你再 讀出來。
#include stdio.h
main()
{
FILE *fp;
char str[30][50]; // 假定文件數不超過30個
int i,n=0;
system(“dir sss_* /B log.txt”);
fp=fopen(“log.txt”,”r”);
while(1){
if ( fgets(str[n],50,fp)==NULL) break;
str[n][strlen(str[n])-1]=’\0′; // 加一個字符串結束符
n++;
}
fclose(fp);
for (i=0;in;i++) printf(“%s\n”,str[i]);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/158048.html