资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

c语言查文件夹目录的函数 c语言获取当前目录下的文件

怎样使用C语言列出某个目录下的文件?

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

十年的船营网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整船营建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“船营网站设计”,“船营网站推广”以来,每个客户项目都认真落实执行。

打开目录

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

关闭目录指针

参考代码:

#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

C语言查文件夹目录的函数请问C语言有什么查文件夹目

opendir

加上

finddir

这两个函数 可以遍历一个文件夹下面的所有文件节点

根据节点属性 可以判断是文件 还是文件夹。

具体用法 自行百度。 很多选项

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语言遍历目录中的文件

使用dir.h库的两个函数即可:findfirst和findnext。

首先调用findfirst函数查找是否有满足条件的某目录文件,如果返回值非0则表示找不到返回。

如果findfirst返回值为0,则循环调用findnext函数,根据返回值,如果为0,结束循环,遍历结束。否则循环调用findnext即可遍历,直到返回非0值即可。

当然,这两个函数需要定义一个结构体来存储函数返回的数据。结构体如下:

struct

ffblk

{

char

ff_reserved[21];

/*DOS保留字*/

char

ff_attrib;

/*文件属性*/

int

ff_ftime;

/*文件时间*/

int

ff_fdate;

/*文件日期*/

long

ff_fsize;

/*文件长度*/

char

ff_name[13];

/*文件名*/

}

将结构体中的ff_name[13]显示出来即可。

C语言函数的目录函数

所在函数库为dir.h、dos.h

int chdir(char *path) 使指定的目录path(如:C:\\WPS)变成当前的工作目录,成

功返回0

int findfirst(char *pathname,struct ffblk *ffblk,int attrib)查找指定的文件,成功

返回0

pathname为指定的目录名和文件名,如C:\\WPS\\TXT

ffblk为指定的保存文件信息的一个结构,定义如下: struct ffblk                        {                                    char ff_reserved[21]; /*DOS保留字*/ char ff_attrib;       /*文件属性*/  int  ff_ftime;        /*文件时间*/  int  ff_fdate;        /*文件日期*/  long ff_fsize;        /*文件长度*/  char ff_name[13];     /*文件名*/   }      attrib为文件属性,由以下字符代表

┃FA_RDONLY 只读文件┃FA_LABEL 卷标号┃

┃FA_HIDDEN 隐藏文件┃FA_DIREC 目录 ┃

┃FA_SYSTEM 系统文件┃FA_ARCH 档案 ┃

例:

struct ffblk ff;

findfirst(*.wps,ff,FA_RDONLY);

int findnext(struct ffblk *ffblk) 取匹配finddirst的文件,成功返回0

void fumerge(char *path,char *drive,char *dir,char *name,char *ext)

此函数通过盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),

文件名name(TC、WPS等),扩展名ext(.EXE、.COM等)组成一个文件名

存与path中.

int fnsplit(char *path,char *drive,char *dir,char *name,char *ext)

此函数将文件名path分解成盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),

文件名name(TC、WPS等),扩展名ext(.EXE、.COM等),并分别存入相应的变量中.

int getcurdir(int drive,char *direc) 此函数返回指定驱动器的当前工作目录名称

drive 指定的驱动器(0=当前,1=A,2=B,3=C等)

direc 保存指定驱动器当前工作路径的变量 成功返回0

char *getcwd(char *buf,iint n) 此函数取当前工作目录并存入buf中,直到n个字

节长为为止.错误返回NULL

int getdisk() 取当前正在使用的驱动器,返回一个整数(0=A,1=B,2=C等)

int setdisk(int drive) 设置要使用的驱动器drive(0=A,1=B,2=C等),

返回可使用驱动器总数

int mkdir(char *pathname) 建立一个新的目录pathname,成功返回0

int rmdir(char *pathname) 删除一个目录pathname,成功返回0

char *mktemp(char *template) 构造一个当前目录上没有的文件名并存于template中

char *searchpath(char *pathname) 利用MSDOS找出文件filename所在路径,

,此函数使用DOS的PATH变量,未找到文件返回NULL


文章题目:c语言查文件夹目录的函数 c语言获取当前目录下的文件
标题路径:http://cdkjz.cn/article/dochsop.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220