Linux下遍历目录下的文件

方法1:

http://tag.csdn.net/Article/ef431d9b-68b3-419f-9f85-1fb9279f904a.html
None.gif//ListFile.cpp
None.gif
#include <stdio.h>
None.gif#include 
<dirent.h>
None.gif#include 
<sys/types.h>
ExpandedBlockStart.gifContractedBlock.gif
int main(int argc, char *argv[]){
ExpandedSubBlockStart.gifContractedSubBlock.gif 
if (2 != argc){
InBlock.gif printf(
"Usage:ListFileSourceFolder ");        
InBlock.gif 
return 1;
ExpandedSubBlockEnd.gif}
    
InBlock.gif  DIR
* pDir = NULL;
InBlock.gif  
struct dirent* ent = NULL;
InBlock.gif  pDir 
= opendir(argv[1]);
ExpandedSubBlockStart.gifContractedSubBlock.gif  
if (NULL == pDir){
InBlock.gif   printf(
"Source folder not exists!");        return 1;
ExpandedSubBlockEnd.gif}
    
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
while (NULL != (ent=readdir(pDir)))  {
InBlock.gif printf(
"%s ", ent->d_name);
ExpandedSubBlockEnd.gif}
 
InBlock.gifclosedir(pDir);
InBlock.gifpDir 
= NULL;


None.gif//ListFile.cpp
None.gif
#include <stdio.h>
None.gif#include 
<dirent.h>
None.gif#include 
<sys/types.h>
ExpandedBlockStart.gifContractedBlock.gif
int main(int argc, char *argv[]){
ExpandedSubBlockStart.gifContractedSubBlock.gif 
if (2 != argc){
InBlock.gif printf(
"Usage:ListFileSourceFolder ");        
InBlock.gif 
return 1;
ExpandedSubBlockEnd.gif}
    
InBlock.gif  DIR
* pDir = NULL;
InBlock.gif  
struct dirent* ent = NULL;
InBlock.gif  pDir 
= opendir(argv[1]);
ExpandedSubBlockStart.gifContractedSubBlock.gif  
if (NULL == pDir){
InBlock.gif   printf(
"Source folder not exists!");        return 1;
ExpandedSubBlockEnd.gif}
    
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
while (NULL != (ent=readdir(pDir)))  {
InBlock.gif printf(
"%s ", ent->d_name);
ExpandedSubBlockEnd.gif}
 
InBlock.gifclosedir(pDir);
InBlock.gifpDir 
= NULL;
法2:
http://topic.csdn.net/t/20051221/16/4472968.html

None.gif试试下面的代码,我是在redhat上编译运行的。   
None.gif    
None.gif  
//g++   -o   read_dir   read_dir.cpp   
None.gif  
//用于列出参数目录下的文件   
None.gif
    
None.gif  #include   
<stdio.h>   
None.gif  #include   
<stdlib.h>   
None.gif    
None.gif  #include   
<sys/types.h>   
None.gif  #include   
<dirent.h>   
None.gif    
None.gif  
int main(int argc,  char*argv[])   
ExpandedBlockStart.gifContractedBlock.gif  
dot.gif{   
InBlock.gif  DIR 
*dp;   
InBlock.gif  
struct   dirent   *dirp;   
InBlock.gif    
InBlock.gif  
if(argc != 2)   
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{   
InBlock.gif  printf(
"not   enough   arguments!   exit!\n");   
InBlock.gif  exit(
0);   
ExpandedSubBlockEnd.gif  }
   
InBlock.gif    
InBlock.gif  
if((dp =opendir(argv[1]))== NULL)   
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{   
InBlock.gif  printf(
"can't   open   %s!\n",argv[1]);   
InBlock.gif  exit(
0);   
ExpandedSubBlockEnd.gif  }
   
InBlock.gif    
InBlock.gif  
while((dirp = readdir(dp))!=NULL)   
InBlock.gif  printf(
"%s\n",dirp->d_name);   
InBlock.gif    
InBlock.gif  closedir(dp);   
ExpandedBlockEnd.gif  }
   
None.gif  


方法3

None.gif#include   <stdio.h>   
None.gif  #include   
<dirent.h>   
None.gif  #include   
<sys/types.h>   
None.gif  #include   
<sys/stat.h>   
None.gif    
None.gif  
void  dir_scan(char *path, char *file);   
None.gif  
int count = 0;   
None.gif    
None.gif 
int main(int argc, char *argv[])   
ExpandedBlockStart.gifContractedBlock.gif 
dot.gif{   
InBlock.gif  
struct   stat   s;   
ExpandedSubBlockStart.gifContractedSubBlock.gif  
if(argc   !=   2)dot.gif{   
InBlock.gif   printf(
"one   direction   requried\n");   
InBlock.gif   exit(
1);   
ExpandedSubBlockEnd.gif  }
   
ExpandedSubBlockStart.gifContractedSubBlock.gif  
if(lstat(argv[1], &s) < 0)dot.gif{   
InBlock.gif   printf(
"lstat   error\n");   
InBlock.gif   exit(
2);   
ExpandedSubBlockEnd.gif }
   
ExpandedSubBlockStart.gifContractedSubBlock.gif 
if(!S_ISDIR(s.st_mode))dot.gif{   
InBlock.gif  printf(
"%s not direction name\n",argv[1]);   
InBlock.gif  exit(
3);   
ExpandedSubBlockEnd.gif}
   
InBlock.gif dir_scan(
"",   argv[1]);   
InBlock.gif    
InBlock.gif printf(
"total: %d files\n",  count);   
InBlock.gif exit(
0);   
ExpandedBlockEnd.gif }
   
None.gif    
None.gif
void dir_scan(char *path,cha日 *file)   
ExpandedBlockStart.gifContractedBlock.gif 
dot.gif{   
InBlock.gif  
struct  stat s;   
InBlock.gif  DIR 
*dir;   
InBlock.gif  
struct   dirent   *dt;   
InBlock.gif  
char   dirname[50];   
InBlock.gif    
InBlock.gif  memset(dirname,
0,50*sizeof(char));   
InBlock.gif  strcpy(dirname,path);   
InBlock.gif    
ExpandedSubBlockStart.gifContractedSubBlock.gif  
if(lstat(file, &s)<0)dot.gif{   
InBlock.gif   printf(
"lstat   error\n");   
ExpandedSubBlockEnd.gif  }
   
InBlock.gif    
ExpandedSubBlockStart.gifContractedSubBlock.gif  
if(S_ISDIR(s.st_mode))dot.gif{   
InBlock.gif   strcpy(dirname
+strlen(dirname), file);   
InBlock.gif   strcpy(dirname
+strlen(dirname), "/");   
ExpandedSubBlockStart.gifContractedSubBlock.gif   
if((dir = opendir(file)) == NULL)dot.gif{   
InBlock.gif    printf(
"opendir   %s/%s   error\n");   
InBlock.gif    exit(
4);   
ExpandedSubBlockEnd.gif   }
   
ExpandedSubBlockStart.gifContractedSubBlock.gif  
if(chdir(file) < 0dot.gif{   
InBlock.gif    printf(
"chdir   error\n");   
InBlock.gif    exit(
5);   
ExpandedSubBlockEnd.gif  }
   
ExpandedSubBlockStart.gifContractedSubBlock.gif  
while((dt = readdir(dir))!= NULL)dot.gif{   
ExpandedSubBlockStart.gifContractedSubBlock.gif                                                  
if(dt->d_name[0]   ==   '.')dot.gif{   
InBlock.gif    
continue;   
ExpandedSubBlockEnd.gif  }
 
InBlock.gif  
InBlock.gif  dir_scan(dirname,dt
->d_name);   
ExpandedSubBlockEnd.gif}
   
ExpandedSubBlockStart.gifContractedSubBlock.gif  
if(chdir(".."<  0)dot.gif{   
InBlock.gif  printf(
"chdir   error\n");   
InBlock.gif  exit(
6);   
ExpandedSubBlockEnd.gif }
   
ExpandedSubBlockStart.gifContractedSubBlock.gif}
elsedot.gif{  
InBlock.gif  printf(
"%s%s\n",   dirname,   file);   
InBlock.gif   count
++;   
ExpandedSubBlockEnd.gif   }
   
ExpandedBlockEnd.gif }
   
None.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

15张图来了解【树】,面试再也不怕被刷了

我之前的文章C语言实现树&#xff0c;你一定看得懂树的概念什么是树&#xff1f;树属于非线性数据结构的一种&#xff0c;概念也极多&#xff0c;是由结点或顶点和边组成的且不存在着任何环的一种数据结构。没有结点的树称为空树。一棵非空的树包括一个根结点&#xff0c;还很可…

String源码图

String StringBuffer StringBuilder 均为对字符数组的操作。 实现了不同的接口&#xff0c;导致不同的覆写。 实现了同样的接口&#xff0c;适应不同的场景。 转载于:https://www.cnblogs.com/zhengwenqiang/p/8076495.html

呵,你会51单片机的精确延时吗?

文章整理自网络序对于某些对时间精度要求较高的程序&#xff0c;用 c 写延时显得有些力不从心&#xff0c;故需用到汇编程序。本人通过测试&#xff0c;总结了 51 的精确延时函数(在 c 语言中嵌入汇编)分享给大家。至于如何在 c 中嵌入汇编大家可以去网上查查&#xff0c;这方面…

--4、实验室设备管理(表)

--4、实验室设备管理create table Computer( Computer_id int Identity Primary key,--设备编号 Computer_name varchar(50) not null,--设备名称 Computer_num varchar(50) not null,--设备编号,财产号 room_id int not null,--实验室编号 --Computer_IP varchar(128), -…

C#中Invoke的用法

在用.NET Framework框架的WinForm构建GUI程序界面时&#xff0c;如果要在控件的事件响应函数中改变控件的状态&#xff0c;例如&#xff1a;某个按钮上的文本原先叫“打开”&#xff0c;单击之后按钮上的文本显示“关闭”&#xff0c;初学者往往会想当然地这么写&#xff1a; v…

嵌入式如何入门,要不要学习Python

#提问我是你的公众号读者朋友&#xff0c;江苏省在读大学生一名&#xff0c;目前是大四免研。研究生方向是嵌入式系统与应用(导师招这样的学生&#xff0c;但是本身设计这个方向不多)&#xff0c;目前还比较有时间&#xff0c;想要自己深入学习一下嵌入式方面的知识&#xff0c…

深入理解cache对写好代码至关重要

There are only two hard things in Computer Science: cache invalidation and naming things.-- Phil Karlton全文目录CACHE基础CACHE的组织TAG,INDEXVIVT,VIPT,PIPTCache别名问题CACHE一致性icache、dcache同步多CPU核cache同步CPU与设备cache同步意识到CACHE的编程perf中的…

Linux 用户空间和内核空间

最近在微信群里看到有人提这个问题&#xff0c;然后查了下资料&#xff0c;觉得这篇文章是写得最能让人看懂的&#xff0c;分享给大家。欢迎大家评论说出自己的见解&#xff0c;让更多的人更容易理解这部分知识。之前的相关文章Linux内存&#xff0c;先看这篇文章Linux物理内存…

一个深入学习Linux/C/C++的原创技术号

今天给大家推荐一个Linux/C/C领域的公众号&#xff0c;大家都知道这个领域的号不多&#xff0c;而【编程珠玑】就是这样一个专注该领域的原创类公众号&#xff0c;原创占比95%以上&#xff0c;目前已有原创文章200多篇&#xff0c;而且原创间环环相扣&#xff0c;皆有关联。公众…

Linux 资料大全

Hello all&#xff0c;给大家分享一些 Linux 学习资料&#xff0c;包含&#xff1a;社区网站、在线教程、命令大全、在线模拟器、经典书籍、镜像站点等 ...从入门到进阶&#xff0c;应有尽有。无论你是小白&#xff0c;还是 Linux 高手&#xff0c;都不容错过&#xff0c;100% …

生命很短,我用tldr

我们平时使用命令的时候&#xff0c;如果忘记的或者不知道这个命令如何使用&#xff0c;然后你就会去百度&#xff0c;也会去使用man 或者 -- help 查看&#xff0c;但是看到的一般都是长篇大论。如果你看了这篇文章&#xff0c;就会知道tldr是怎么样的存在。tldr 的含义TL;DR …

折半查找判定树及平均查找长度

折半查找判定树及平均查找长度 从折半查找的过程看&#xff0c;以有序表的中间记录作为比较对象&#xff0c;并以中间记录将表分割为两个子表&#xff0c;对子表继续上述操作。所以&#xff0c;对表中每个记录的查找过程&#xff0c;可用二叉树来描述&#xff0c;二叉树中的每个…

华为开始对嵌入式开发者下手了!

5G时代到来&#xff0c;物联网技术的应用也离我们越来越近。智慧交通、智能家庭、智慧园区&#xff0c;越来越多的融入到我们的生活当中。作为物联网重要技术组成的嵌入式系统&#xff0c;嵌入式系统视角有助于深刻地、全面地理解物联网的本质。而物联网是通用计算机的互联网与…

二叉排序树和平衡二叉排序树

二叉排序树又称为二叉查找树&#xff0c;它是一颗特殊的二叉树。&#xff08;空树&#xff09; 性质&#xff1a;1、若它的左子树非空&#xff0c;则左子树上的所有结点的值均小于根结点的值。 2、若它的右子树非空&#xff0c;则右子树上的所有结点的值均大于根结点的值。 3、…

FUSE文件系统

Fuse(filesystem in userspace),是一个用户空间的文件系统。通过fuse内核模块的支持&#xff0c;开发者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文件系统。由于其主要实现代码位于用户空间中&#xff0c;而不需要重新编译内核&#xff0c;这给开发者带来了众…

数组 的地址计算

数组是一个特殊的数据结构&#xff0c;数组的基本操作不涉及数组结构的变化&#xff0c;因此对于数组而言&#xff0c;采用顺序存储表示比较合适。数组的顺序存储结构有两种&#xff1a;一、以行序存储&#xff0c;如高级语言BASIC、COBOL、Pascal、c语言。二、以列序存储&…

你会选择深圳还是佛山?

最近是校招季节&#xff0c;有很多人在询问offer的问题&#xff0c;我知道我已经发了很多这样相关的文章&#xff0c;可能大家看着都有点不耐烦了&#xff0c;不过还是想说&#xff0c;人生重要的选择真的没有几个&#xff0c;我每次回答都特别慎重&#xff0c;我有时候发出来也…

optimizer

在很多机器学习和深度学习的应用中&#xff0c;我们发现用的最多的优化器是 Adam&#xff0c;为什么呢&#xff1f; 下面是 TensorFlow 中的优化器&#xff0c; https://www.tensorflow.org/api_guides/python/train 在 keras 中也有 SGD&#xff0c;RMSprop&#xff0c;Adagr…

【漫画】25岁程序员 VS 35岁程序员,塑造自己的不可替代性,才能让自己更有价值 ​...

其中的酸甜苦辣你中了几条经常有人说&#xff1a;35岁是程序员的魔咒。但其实相比于刚毕业的年轻人&#xff0c;虽然35岁的程序员从精力上和年龄上都不再占有优势&#xff0c;但十几年的沉淀所造就的从容也是这个年龄段所独有的。当然&#xff0c;也不只是程序员&#xff0c;任…

WIN命令

azman.msc--授权管理器admgmt.msc--ad管理calc-----------启动计算器certmgr.msc--证书&#xff0d;当前用户certtmpl.msc--证书模板 compmgmt.msc---计算机管理conf-------启动netmeetingcys--配置您的服务器dcomcnfg.exe--组件服务dcpol.msc--域控制器策略 filesvr.msc--文件…