Ⅰ 如何获取目录下所有文件名 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语言怎么读取某一文件夹下的所有文件夹和文件
读取的代码方式如下:
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;
}
Ⅲ 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;
 }
}
Ⅳ 急~!!!如何用C/C++ 读取文件夹中所有文件(如.csv文件)
CString pathWild = "你的路径" + _T("\\*.csv");
struct _finddata_t c_file;
long hFile;
if( (hFile = _findfirst( LPCTSTR(pathWild), &c_file )) == -1L)
{
 MessageBox("选择目录下并无csv文件,请确认");
 _findclose(hFile);
 return;
}
else
{
 do
 {
  //这里就是文件名,加专上之前的路径就是完整路径了属
  CString strFileName = c_file.name;
 }
 while (_findnext(hFile, &c_file) == 0);
}
_findclose(hFile);
Ⅳ C语言:如何得到指定地址的文件夹中所有文件的文件名和其修改时间 包括子文件内的
//获取指定目录下的所有文件列表 author:wangchangshaui jlu  
char** getFileNameArray(const char *path, int* fileCount)  
{  
    int count = 0;  
    char **fileNameList = NULL;  
    struct dirent* ent = NULL;  
    DIR *pDir;  
    char dir[512];  
    struct stat statbuf;  
  
//打开目录  
    if ((pDir = opendir(path)) == NULL)  
    {  
        myLog("Cannot open directory:%s\n", path);  
        return NULL;  
    }  
//读取目录  
    while ((ent = readdir(pDir)) != NULL)  
    { //统计当前文件夹下有多少文件(不包括文件夹)  
//得到读取文件的绝对路径名  
        snprintf(dir, 512, "%s/%s", path, ent->d_name);  
        //得到文件信息  
        lstat(dir, &statbuf);  
        //判断是目录还是文件  
        if (!S_ISDIR(statbuf.st_mode))  
        {  
            count++;  
        }  
    } //while  
//关闭目录  
    closedir(pDir);  
//  myLog("共%d个文件\n", count);  
  
//开辟字符指针数组,用于下一步的开辟容纳文件名字符串的空间  
    if ((fileNameList = (char**) myMalloc(sizeof(char*) * count)) == NULL)  
    {  
        myLog("Malloc heap failed!\n");  
        return NULL;  
    }  
  
//打开目录  
    if ((pDir = opendir(path)) == NULL)  
    {  
        myLog("Cannot open directory:%s\n", path);  
        return NULL;  
    }  
//读取目录  
    int i;  
    for (i = 0; (ent = readdir(pDir)) != NULL && i < count;)  
    {  
        if (strlen(ent->d_name) <= 0)  
        {  
            continue;  
        }  
        //得到读取文件的绝对路径名  
        snprintf(dir, 512, "%s/%s", path, ent->d_name);  
        //得到文件信息  
        lstat(dir, &statbuf);  
        //判断是目录还是文件  
        if (!S_ISDIR(statbuf.st_mode))  
        {  
            if ((fileNameList[i] = (char*) myMalloc(strlen(ent->d_name) + 1))  
                    == NULL)  
            {  
                myLog("Malloc heap failed!\n");  
                return NULL;  
            }  
            memset(fileNameList[i], 0, strlen(ent->d_name) + 1);  
            strcpy(fileNameList[i], ent->d_name);  
            myLog("第%d个文件:%s\n", i, ent->d_name);  
            i++;  
        }  
    } //for  
//关闭目录  
    closedir(pDir);  
  
    *fileCount = count;  
    return fileNameList;  
}
Ⅵ 如何用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);   
 }