精华内容
下载资源
问答
  • c语言 获取目录文件列表

    千次阅读 2015-03-20 16:35:56
    #include #include char** GetFileList(const char *path, int *cnt) { HANDLE hRes; WIN32_FIND_DATA data; LPCSTR IpFileName; int count = 0; char tmpDir[MAX_PATH] = "";... int i =
    #include <stdio.h>
    #include <windows.h>
    
    char** GetFileList(const char *path, int *cnt)
    {
    	HANDLE hRes;
    	WIN32_FIND_DATA data;
    	LPCSTR IpFileName;
    	int count = 0;
    	char tmpDir[MAX_PATH] = "";
    	char ** fileList;
    	int i = 0;
    
    	strcat(tmpDir,path);
    	strcat(tmpDir,"\\*");    //匹¥配?所ù有瓺的?文?件t类え?型í
    	IpFileName = tmpDir;
    
    	hRes = FindFirstFileEx(IpFileName,FindExInfoStandard,&data,FindExSearchNameMatch,NULL,0);
    
    	//计?算?该?目?录?下?文?件t的?个?数簓
    	while(FindNextFile(hRes,&data))
    	{
    		if(strcmp(data.cFileName,".") ==0 || strcmp(data.cFileName,"..") == 0)
    			continue;
    
    		count++;
    	}
    
    	fileList = (char**)malloc(sizeof(char*)*count);
    
    	hRes = FindFirstFileEx(IpFileName,FindExInfoStandard,&data,FindExSearchNameMatch,NULL,0);
    
    	//计?算?该?目?录?下?文?件t的?个?数簓
    	while(FindNextFile(hRes,&data))
    	{
    		if(strcmp(data.cFileName,".") ==0 || strcmp(data.cFileName,"..") == 0)
    			continue;
    
    		fileList[i] = (char*)malloc(strlen(data.cFileName)+1);
    		memset(fileList[i],0,strlen(data.cFileName)+1);
    
    		strcpy(fileList[i],data.cFileName);
    
    		i++;
    	}
    	*cnt = i;
    	return fileList;
    }
    
    int main()
    {
    	char *path = "E:/ubuntuShare";
    	int res,i;
    	char **fileList;
    
    	fileList = GetFileList(path,&res);
    
    	for(i = 0; i < res; i++)
    	{
    		printf("%s\n",fileList[i]);
    	}
    
    	return 0;
    }
    

    展开全文
  • //获取指定目录下的所有文件列表 author:wangchangshaui jluchar** getFileNameArray(const char *path, int* fileCount){int count = 0;char **fileNameList = NULL;struct dirent* ent = NULL;DIR *pDir;char dir...

    //获取指定目录下的所有文件列表 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语言 获取指定目录下的文件列表

    万次阅读 2013-12-20 21:21:19
    //获取指定目录下的所有文件列表 char** getFileNameArray(const char *path, int* fileCount) { int count = 0; char **fileNameList = NULL; struct dirent* ent = NULL; DIR *pDir; char dir[512]; struct ...
    //获取指定目录下的所有文件列表 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语言获取目录下目录&文件列表

    千次阅读 2016-02-16 21:34:07
    数据结构struct dirent { long d_ino; /* inode number 索引节点号 */ off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ unsigned short d_reclen; /* length of this d_na

    数据结构

    struct dirent
    {
        long d_ino;                 /* inode number 索引节点号 */
        off_t d_off;                /* offset to this dirent 在目录文件中的偏移 */
        unsigned short d_reclen;    /* length of this d_name 文件名长 */
        unsigned char d_type;        /* the type of d_name 文件类型 */    
        char d_name [NAME_MAX+1];   /* file name (null-terminated) 文件名,最长255字符 */
    }
    
    struct __dirstream
      {
        void *__fd;                        /* `struct hurd_fd' pointer for descriptor.  */
        char *__data;                /* Directory block.  */
        int __entry_data;                /* Entry number `__data' corresponds to.  */
        char *__ptr;                /* Current pointer into the block.  */
        int __entry_ptr;                /* Entry number `__ptr' corresponds to.  */
        size_t __allocation;        /* Space allocated for the block.  */
        size_t __size;                /* Total valid data in the block.  */
        __libc_lock_define (, __lock) /* Mutex lock for this structure.  */
      };
    
    typedef struct __dirstream DIR;

    实现

    • linux可以直接使用d_type判断是目录还是文件,win则不支持
    • linux已经定义了NAME_MAX(centos6.5为255),win则需要定义,所以”#ifndef NAME_MAX”可改成”#ifdef WIN32”
    #include <dirent.h>
    #include <string.h>
    
    //#ifdef WIN32
    #ifndef NAME_MAX
        #define NAME_MAX 255
    #endif
    
    int listDir( char dirName[], char buffer[][NAME_MAX], const int maxFileAmount, const int maxStringLength )
    {
        DIR *dir;
        struct dirent *ptr;
        dir = opendir( dirName ); //open the dir
    
        int amount = 0;
        while((ptr = readdir(dir)) != NULL && amount < maxFileAmount){ //read the list of this dir
            strncpy( buffer[amount], ptr->d_name, maxStringLength );
            #ifdef __linux
                if (ptr->d_type == 4)
                    strcat( buffer[amount], "/" ); //add a folder marker
            #endif
            ++amount;
        }
        closedir(dir);
        return amount;
    }
    展开全文
  • Linux下C语言获取目录中的文件列表

    千次阅读 2013-10-09 16:50:25
    注意:假设要读取的目录中有多个文件,文件名分别为:1.bin, 2.bin, 3.bin,.....99.bin等  程序的读取顺序是这样的:1.bin, 10.bin, 11.bin,....19.bin, 2.bin,   20.bin,...,29.bin,....99.bin  而不是...
  • 满意答案shuilan74702013.08.24采纳率:56%等级:12已帮助:7711人C语言的我不知道,这个是C++的,VC6.0,文件改成cpp扩展名就可以运行。#include #include #include #include using namespace std;void FileList...
  • 每隔1秒扫描一次当前进程列表,终止非授权当前用户下的任何进程,抓取屏幕另存为bmp文件获取进程用户名,关机函数。由于我菜鸟,注释不一定对。下载了觉得不好的,就对不起了 环境:vc6.0 vs2010 系统:xp 仅授予...
  • SEP系统只能完成简单的运行可执行程序、检测文件是否存在、注册表是否存在等功能,因此需要写一个简单的判断双网卡的程序。因此写了一个简单的程序,代码如下:#include#include#include#pragmacomment(lib,"ws2_32...
  • C语言编写高并发Http文件上传下载服务器前言项目效果图项目介绍环境介绍程序结构之:event相关程序结构之:http相关第一种 获取文件列表类 POST请求第二种 获取文件列表类 GET请求第三种 获取文件内容类 GET请求源码...
  • 遍历文件夹获取文件信息的文件 ``` #include"search_engine.h" void find(char * lpPath) //读取一个文件夹的文件名 { int i=0; char szFind[MAX_PATH],szFile[MAX_PATH]; WIN32_FIND_DATA ...
  • C语言-目录操作1

    2021-02-07 17:36:53
    获取文件的目录列表 C语言-目录操作 目录操作在嵌入式产品和应用式软件编程必不可少。 获取当前目录 Linux下直接输入pwd来获取当前工作目录,这个命令由系统通过shell程序解释执行。 模拟实现pwd,获取...
  • 获取文件信息 获取文件分享链接 获取文件历史版本 创建文件 删除文件 移动文件 复制文件 复制引用 上传文件 下载文件 获取文件缩略图 文件转换 。使用者可以使用上述封装函数进行金山快盘的操作,需要...
  • C语言目录操作

    2021-01-25 10:09:26
    文章目录一、获取当前工作目录二、切换工作目录三、目录的创建和删除四、获取目录中的文件列表1、包含头文件2、相关的库函数3、数据结构4、读取目录五、应用经验六、课后作业七、版权声明 目录的操作不论是在嵌入式...
  • 怎么可以从文件获取声音文件,然后列表输出。用c语言写一个mp3的代码。
  • C语言IO详解

    2014-04-04 16:37:39
    标准 C I/O 函数列表: clearerr() 清除错误  fclose() 关闭一个文件  feof() 如果到达文件尾(end-of-file)返回"True"(真)  ...fgetpos() 获取文件位置指针  fgets() 从一个流获取一串字符  fo
  • 标准C语言IO

    2012-08-07 21:00:34
    函数列表: clearerr() 清除错误 fclose() 关闭一个文件 feof() 如果到达文件尾(end-of-file)返回"True"(真) ...fgetpos() 获取文件位置指针 fgets() 从一个流获取一串字符 fopen() 打开一个文件
  • C语言常用算法

    2012-03-28 10:48:37
    165 获取BIOS设备列表 166 锁住硬盘 167 备份/恢复硬盘分区表 168 设计口令程序 169 程序自我保护 第六部分 常见试题解答篇 170 水果拼盘 171 小孩吃梨 172 删除字符串中的特定字符 173 求解符号方程 ...
  • 初学C语言之目录操作

    2021-05-11 15:28:55
    获取目录中的文件列表4.1 包含头文件4.2 包含的库函数4.3 数据结构 主要说明linux下,创建目录和列出目录中的文件两个功能, 使用场景最多 一. 获取当前目录 char *getcwd(char *buf, size_t size) 二.切换目录 int ...
  • C语言怎么实现可变参数? 摘要 原理 例子 自己动手实现可变参数 C语言使用可变参数,需要借助宏。这些宏定义在stdarg.h文件。stdarg.h声明了一个类型va... //获取列表中第一个参数,第二个形参是参数类型 va_arg(v_ar
  • C语言实例解析精粹

    2014-03-14 21:57:05
    165 获取BIOS设备列表 166 锁住硬盘 167 备份/恢复硬盘分区表 168 设计口令程序 169 程序自我保护 第六部分 常见试题解答篇 170 水果拼盘 171 小孩吃梨 172 删除字符串中的特定字符 173 求解符号方程 ...
  • 深入详解标准C语言 IO

    千次阅读 2014-04-25 16:55:05
    标准 C I/O 函数列表: clearerr() 清除错误  fclose() 关闭一个文件  feof() 如果到达文件尾(end-of-file)返回"True"(真)  ...fgetpos() 获取文件位置指针  fgets() 从一个流获取一串字符  fo
  • C语言实例解析精粹 PDF

    热门讨论 2010-08-17 00:20:25
    实例165 获取BIOS设备列表 实例166 锁住硬盘 实例167 备份/恢复硬盘分区表 实例168 设计口令程序 实例169 程序自我保护 第六部分 常见试题解答篇 实例170 水果拼盘 实例171 小孩吃梨 实例172 删除字符串中的特定字符...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 148
精华内容 59
关键字:

c语言获取文件列表

c语言 订阅