本文目录一览:
- 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]);
}