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

1.可以通过使用getenv函数来实现。

在Linux系统中,home目录的定义是由系统环境变量中HOME变量的值决定的,这个变量可以由shell定义。

Echo $HOME查看一下。

在C语言中,库函数getenv可以用来获取环境变量的值。这个函数位于stdlib.h中,它的原型是

char * getenv(char * name);

函数的作用是获取一个名为name的环境变量字符串。

所以,下面的代码可以得到主目录名:

2.常规:

char * home

HOME = getenv(" HOME ");

printf(" home路径是%s\n ",home);

c语言如何找出当前目录下有哪些文件? 在命令提示符窗口运行:findfile(驱动器号):\ *。(文件后缀)

如:[源代码language = "plain"] findfile d: \ *。txt[/源代码]

也就是说,查找所有带有。D盘根目录下的txt后缀,并将文件路径写入文件。

C语言如何获取文件夹中的所有文件? 更简单的方法是使用DOS命令DIR,转到一个文件,然后打开该文件,一个一个地读取文件名。

例如:

char my _ cmd[80]= " DIR/B/A-D D:\ \ USER \ \ WANG ABC . lis ";

系统(cmd);

你得到D:\\USER\\WANG文件夹里的所有文件。该选项意味着只列出文件名并按字母顺序排列。

Abc.lis保存文件abc.lis

然后,可以使用FILE * fpfp = fopen("abc.lis "," r ");打开文件

用fgets()读取文件名。

如何用C语言列出一个目录下的文件? 用C语言列出目录中的文件,可以在linux下用readdir()函数实现。代码实现过程如下:

打开目录

循环读取目录,输出目录中的文件。

关闭目录指针

参考代码:

#包含目录. h

#包含stdio.h

int main()

{

DIR * dirp

结构方向* dp

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

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

printf("%s\n ",DP-d _ name);

}

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

返回0;

}

在windows下,代码如下:

#包含io.h

#包含stdio.h

void printDir( const char* path)

{

struct _finddata_t数据;

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

如果(hnd 0)

{

perror(路径);

}

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

while ( nRet = 0)

{

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

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

其他

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

nRet = _findnext( hnd,data);

}

_ find close(hnd);//关闭当前句柄

}

void main()

{

printDir("d:/*。*");

}

相关功能描述:

long _findfirst( char *filespec,struct _ find data _ t * fileinfo);

//函数:提供第一个与filespec指定的条目类型匹配的文件。通常使用_findnext()函数完成某一类型下的文件遍历。

//头文件:# includeo.h。

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

//fileinfo-文件信息缓冲区

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

//Error返回-1,errno设置为以下值:

// ENOENT无法匹配此通用表达式。

// EINVAL无效文件名

int _findnext(长句柄,struct _ find data _ t * fileinfo);

//函数:根据previous _findfirst中的共性规则,找到下一个符合共性的文件,并以此为基础修改fileinfo中的值。

//头文件:# includeo.h。

//参数:long handle-搜索句柄(通常由它前面的_findfirst()返回)

//fileinfo-文件信息缓冲区

//返回值:0成功返回。

//返回了错误-1

int _findclose(长句柄);

//函数:关闭搜索句柄,释放相应的资源。

//头文件:# includeo.h。

//参数:long handle-搜索句柄(通常由它前面的_findfirst()返回)

//返回值:0成功返回。

//返回了错误-1

VC环境下用C语言查找当前路径下所有文件和文件夹的功能是什么? 这是我的TFTP程序中的一个函数。它搜索当前驱动器号下的所有文件,包括文件大小,并将它们发送到客户端。其中你可以找到当前路径下的文件,应该可以完成你的要求。

void文件列表(sockaddr_in sour_addr,char strStartDir[])

{

char send buffer[1024];

sockaddr _ in destaddr

int sour len = 0;

int ret = 0;

int len = 0;

int flen = 0;

fd _ set fdr

无符号短block num = 0;

文件*文件;

字符文件名[128];

strcpy(文件名,strStartDir 2);/*获取文件名*/

strcat(文件名,“\ \ *”);

destaddr.sin _ family = AF _ INET

destaddr . sin _ port = sour _ addr . sin _ port;

destaddr . sin _ addr . s _ addr = inet _ addr(dest host);//

WIN32 _ FIND _ DATA FindFileData

处理hFind

hFind = FindFirstFile(文件名,FindFileData);

if (hFind == INVALID_HANDLE_VALUE)

{

printf("无效文件句柄");

}

其他

{

while(FindNextFile(hFind,FindFileData))

{

printf(findfiledata . cfilename);

printf(" \ r \ n ");

memset(sendbuffer,' \0 ',1024);

len = filldata(blocknum,FindFileData.cFileName,strlen(FindFileData.cFileName),sendbuffer,sizeof(send buffer));

ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)destaddr,sizeof(destaddr));

}

len = fillover(blocknum," over ",4,sendbuffer,sizeof(send buffer));

ret = sendto(serverSock,sendbuffer,len,0,(sockaddr *)destaddr,sizeof(destaddr));

FindClose(hFind);

返回;

}

}

请告诉我如何用C语言遍历文件夹。 #包含windows.h

/************************************************/

*参数描述:

Char *pszDestPath是要遍历的目标路径。

/************************************************/

EnmuDirectory(char *pszDestPath)

{

//有关此结构描述,请参考MSDN。

WIN32 _ FIND _ DATA FindFileData

//找到文件的句柄

处理hListFile

//绝对路径,例如:c:\ windows \ system32 \ cmd.exe。

char szFullPath[MAX _ PATH];

//相对路径

char szFilePath[MAX _ PATH];

//构造相对路径

wsprintf(szFilePath," %s\\* ",pszDestPath);

//找到第一个文件并获取搜索句柄。如果FindFirstFile返回INVALID_HANDLE_VALUE,则返回。

if((hListFile = findfirst file(szfile path,FindFileData))= = INVALID _ HANDLE _ VALUE)

{

//查找文件时出错

返回1;

}

其他

{

{

//过滤。和..

//"."表示当前目录,而“..”表示父目录。

if(lstr CMP(findfiledata . cfilename,TEXT(" . ")) == 0 ||

lstrcmp(FindFileData.cFileName,TEXT(" .. ")) == 0 )

{

继续;

}

//构造完整路径

wsprintf(szFullPath," %s\\%s ",pszDestPath,findfiledata . cfilename);

//如果不是文件夹,读取文件属性。

如果(!(FindFileData.dwFileAttributes文件属性目录))

{

//这里可以添加自己的代码来分析某种类型的文件。可以基于

//扩展分析。

//这里有个例子,你可以看看。

//有必要初始化它。

char * pszFileType = NULL

//将pszFileType指向cFileName的倒数第二个符号。因为扩展名通常是3个字符长。

//当然也可以用其他方式分析扩展。或者抬头“.”以相反的顺序。

PSZ filetype =(findfiledata . cfilename[strlen(findfiledata . cfilename)-3]);

//如果是jpg结尾的文件。

如果(!stricmp(pszFileType," jpg "))

{

FILE * fp

//也许你不应该在这里用“w”打开C:\\data.txt。你可以试试。

fp = fopen("c:\\data.txt "," w ");

if(fp) fputs(szFullPath,FP);

fclose(FP);

}

}

//如果是文件夹,递归调用EnmuDirectory函数。

if(findfiledata . dwfile attributes文件属性目录)

{

enmu directory(szFullPath);

}

//循环查找下一个文件。

}while(FindNextFile(hListFile,FindFileData));

}

//关闭句柄

FindClose(hListFile);

//清除结构。可有可无的代码。功能退出将被自动清除。

ZeroMemory(FindFileData,sizeof(FindFileData));

返回0;

}

这是windows api版本,还有MFC版本和C版本。想要就来找我Q: 503267714

相关文章

发表新评论