c语言查询文件夹下所有文件路径

如何用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语言查询文件夹下所有文件路径

c语言 怎么查找 当前目录有哪些 文件

在命令提示符窗口运行:findfile (盘符):\ *.(文件后缀)

如:[sourcecode language=”plain”]findfile d:\ *.txt [/sourcecode]

即为找出d盘根目录下的所有.txt后缀的文件并写入文件路径于文件中。

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语言列出某个目录下的文件?

用C语言列出目录下的文件,在linux下可采用readdir()函数来实现,代码实现过程为:

打开目录

循环读目录,输出目录下文件

关闭目录指针

参考代码:

#include dirent.h

#include stdio.h

int main()

{

    DIR *dirp; 

    struct dirent *dp;

    dirp = opendir(“.”); //打开目录指针

    while ((dp = readdir(dirp)) != NULL) { //通过目录指针读目录

        printf(“%s\n”, dp-d_name );

    }      

    (void) closedir(dirp); //关闭目录

    return 0;

}

在windows下,代码如下:

#include io.h

#include stdio.h

void printDir( const char* path )

{

    struct _finddata_t data;

    long hnd = _findfirst( path, data );    // 查找文件名与正则表达式chRE的匹配第一个文件

    if ( hnd  0 )

    {

        perror( path );

    }

    int  nRet = (hnd 0 ) ? -1 : 1;

    while ( nRet = 0 )

    {

        if ( data.attrib == _A_SUBDIR )  // 如果是目录

            printf(”   [%s]*\n”, data.name );

        else

            printf(”   [%s]\n”, data.name );

        nRet = _findnext( hnd, data );

    }

    _findclose( hnd );     // 关闭当前句柄

}

void main()

{

printDir(“d:/*.*”);

}

相关函数说明:

long _findfirst( char *filespec, struct _finddata_t *fileinfo );  

// 功  能 : 提供与filespec指定入口泛式匹配的第一个文件.通常后继用_findnext()函数来完成某泛式下的文件遍历.  

// 头文件 : #include io.h  

// 参  数 : filespec – 目标文件规范,可以包含通配符  

//          fileinfo – 文件信息buffer  

// 返回值 : 成功返回唯一的搜索句柄  

//          出错返回-1,且设置errno为如下值:  

//          ENOENT 该泛式无法匹配  

//          EINVAL 无效文件名  

int _findnext( long handle, struct _finddata_t *fileinfo );  

// 功  能 : 按照前面_findfirst中的泛式规则,查找下一个符合该泛式的文件,并以此为依据修改fileinfo中的值  

// 头文件 : #include io.h  

// 参  数 : long handle – 搜索句柄(通常由紧靠其前的_findfirst()返回)  

//          fileinfo    – 文件信息buffer  

// 返回值 : 成功返回0  

//          出错返回-1

int _findclose( long handle );  

// 功  能 : 关闭搜寻句柄并释放相应资源  

// 头文件 : #include io.h  

// 参  数 : long handle – 搜索句柄(通常由紧靠其前的_findfirst()返回)  

// 返回值 : 成功返回0  

//          出错返回-1

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语言遍历文件夹

#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

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月26日 19:21:45
下一篇 2024年3月26日 19:30:02

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    4100
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5800
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4500
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4500
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7500
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6500
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4700
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    5000
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3500
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4500

发表回复

登录后才能评论



关注微信