博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nullnullhow to read directory name using std c in the linux
阅读量:5265 次
发布时间:2019-06-14

本文共 3280 字,大约阅读时间需要 10 分钟。

在改章节中,我们主要介绍nullnull的内容,自我感觉有个不错的建议和大家分享下

    每日一道理
生活的无奈,有时并不源于自我,别人无心的筑就,那是一种阴差阳错。生活本就是矛盾的,白天与黑夜间的距离,春夏秋冬之间的轮回,于是有了挑剔的喜爱,让无奈加上了喜悦的等待。
#include 
#include
#include
#include
#include
#define err_quit printf#define err_sys printf#define TRUE 1#define FALSE 0#define EXIT_FAILE 0#define EXIT_SUCESS 1#define bool charstatic char g_cur_dir[256] = "";int read_directory(char *dir_name, bool brecurse);void usage(char state, char *str);int main(int argc, char **argv){ int c; char recurse = 0; struct option long_option[]= { {"dirname", no_argument, NULL, 0 }, {"recurse", optional_argument, NULL, 'r'}, {"help", no_argument, NULL, 'h'}, {0, 0, 0, 0 }, }; //read current directory. //if no any params, read current dir files. if(argc < 2) { read_directory("./", TRUE); return ; } //read command line params. while((c = getopt_long(argc, argv, "hr::", long_option, NULL)) != EOF) //while((c = getopt(argc, argv, ":hr::")) != EOF) { switch(c) { case 'r': recurse = 1; break; case 'h': usage(EXIT_SUCESS, argv[0]); break; default: usage(EXIT_FAILE, argv[0]); break; } } if (recurse && (optind == argc)) { read_directory("./", TRUE); exit(0); } //read all files from argv[optind]. for(; optind < argc; ++optind) { read_directory(argv[optind], recurse); } exit(0);}int read_directory(char *dir_name, bool brecurse){ DIR *dp; struct dirent *dir; strcpy(g_cur_dir, dir_name); if (g_cur_dir[strlen(g_cur_dir) -1] == '/') g_cur_dir[strlen(g_cur_dir) -1] = 0; if ((dp = opendir(dir_name)) == NULL) { err_sys("can't open %s. \n", dir_name); return ; } while( (dir = readdir(dp)) != NULL) { if ( brecurse && (DT_DIR == dir->d_type) && (strcmp(dir->d_name, ".") != 0) && (strcmp(dir->d_name, "..") != 0) ) { printf("%s/", g_cur_dir); printf("%s\n", dir->d_name); strcat(g_cur_dir, "/"); strcat(g_cur_dir, dir->d_name); read_directory(g_cur_dir, brecurse); g_cur_dir[strlen(g_cur_dir) - strlen(dir->d_name) - 1] = 0; } else { printf("%s/", g_cur_dir); printf("%s\n", dir->d_name); } } closedir(dp);}void usage(char state, char *str){ if (state == EXIT_FAILE) { printf("\n"); } else { printf("\n"); printf("========================================\n"); printf("read directory:\n"); printf("\n"); printf("Usage: %s [-r] [directory]\n\n", str); printf(" -r: read all files under each directory, recursively. \n"); printf("========================================\n"); printf("/n"); exit(0); }}

    

 

文章结束给大家分享下程序员的一些笑话语录: 看新闻说中国输入法全球第一!领先了又如何?西方文字根本不需要输入法。一点可比性都没有。

转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/20/3089414.html

你可能感兴趣的文章
iOS开发常用小技巧记录(持续更新)
查看>>
iOS---The maximum number of apps for free development profiles has been reached.
查看>>
Extract Method(提炼方法)
查看>>
markdown技巧总结
查看>>
openssh-server
查看>>
Shell操作相关的快捷键 --Linux
查看>>
LC-456 132模式
查看>>
中文编码问题
查看>>
简单makefile的写法
查看>>
javascript正则多次调用test 结果交替出现
查看>>
How Django works?
查看>>
程序设计原则——LSP
查看>>
【转】c#实现文件下载
查看>>
mysqldump指令说明
查看>>
sql server面试题
查看>>
ogg数据初始化历程记录
查看>>
VFP通用代码(vcx/scx/prg)混淆器,可以下载了
查看>>
QGhappy第二次例会(任务分配)
查看>>
前端学习回顾
查看>>
python json.dumps 中的ensure_ascii 参数引起的中文编码问题
查看>>