c语言之ls目录的简单实现和window版本dirent.h
来源:互联网 发布:淘宝宝贝卖点是什么 编辑:程序博客网 时间:2024/06/06 02:42
#include <stdio.h>#if _WIN32#include <Windows.h>#include <io.h>#include "dirent.h"#else#include <unistd.h>#include <dirent.h>#endif//window 下载http://www.softagalleria.net/download/dirent/dirent-1.21.zipint main(int argc, char *argv[]){ DIR *dir; struct dirent* mydirent; if(argc!=2) { printf("usage:directory_name"); return -1; } if((dir=opendir(argv[1]))!=NULL) { while((mydirent=readdir(dir))!=NULL) { printf("%s \n",mydirent->d_name); } }else{ printf("cannot open %s",argv[1]); return -1; } closedir(dir); return 0;}
/* * An example demonstrating recursive directory traversal. * * Compile this file with Visual Studio 2008 project vs2008.sln and run * the produced command in console with a directory name argument. For * example, command * * find "C:\Program Files" * * might produce a listing with thousands of entries such as * * c:\Program Files/7-Zip/7-zip.chm * c:\Program Files/7-Zip/7-zip.dll * c:\Program Files/7-Zip/7z.dll * c:\Program Files/Adobe/Reader 10.0/Reader/logsession.dll * c:\Program Files/Adobe/Reader 10.0/Reader/LogTransport2.exe * c:\Program Files/Windows NT/Accessories/wordpad.exe * c:\Program Files/Windows NT/Accessories/write.wpc * * The find command provided by this file is only an example. That is, * the command does not provide options to restrict the output to certain * files as the Linux version does. * * Copyright (C) 2006-2012 Toni Ronkko * This file is part of dirent. Dirent may be freely distributed * under the MIT license. For all details and documentation, see * https://github.com/tronkko/dirent */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dirent.h>static int find_directory (const char *dirname);intmain( int argc, char *argv[]) { int i; int ok; /* For each directory in command line */ i = 1; while (i < argc) { ok = find_directory (argv[i]); if (!ok) { exit (EXIT_FAILURE); } i++; } /* List current working directory if no arguments on command line */ if (argc == 1) { find_directory ("."); } return EXIT_SUCCESS;}/* Find files and subdirectories recursively */static intfind_directory( const char *dirname){ DIR *dir; char buffer[PATH_MAX + 2]; char *p = buffer; const char *src; char *end = &buffer[PATH_MAX]; int ok; /* Copy directory name to buffer */ src = dirname; while (p < end && *src != '\0') { *p++ = *src++; } *p = '\0'; /* Open directory stream */ dir = opendir (dirname); if (dir != NULL) { struct dirent *ent; /* Print all files and directories within the directory */ while ((ent = readdir (dir)) != NULL) { char *q = p; char c; /* Get final character of directory name */ if (buffer < q) { c = q[-1]; } else { c = ':'; } /* Append directory separator if not already there */ if (c != ':' && c != '/' && c != '\\') { *q++ = '/'; } /* Append file name */ src = ent->d_name; while (q < end && *src != '\0') { *q++ = *src++; } *q = '\0'; /* Decide what to do with the directory entry */ switch (ent->d_type) { case DT_LNK: case DT_REG: /* Output file name with directory */ printf ("%s\n", buffer); break; case DT_DIR: /* Scan sub-directory recursively */ if (strcmp (ent->d_name, ".") != 0 && strcmp (ent->d_name, "..") != 0) { find_directory (buffer); } break; default: /* Ignore device entries */ /*NOP*/; } } closedir (dir); ok = 1; } else { /* Could not open directory */ printf ("Cannot open directory %s\n", dirname); ok = 0; } return ok;}
/* * An example demonstrating basic directory listing. * * Compile this file with Visual Studio 2008 project vs2008.sln and run the * produced command in console with a directory name argument. For example, * command * * ls "c:\Program Files" * * might output something like * * ./ * ../ * 7-Zip/ * Internet Explorer/ * Microsoft Visual Studio 9.0/ * Microsoft.NET/ * Mozilla Firefox/ * * The ls command provided by this file is only an example. That is, the * command does not have any fancy options like "ls -al" in Linux and the * command does not support file name matching like "ls *.c". * * Copyright (C) 2006-2012 Toni Ronkko * This file is part of dirent. Dirent may be freely distributed * under the MIT license. For all details and documentation, see * https://github.com/tronkko/dirent */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dirent.h>static void list_directory (const char *dirname);intmain( int argc, char *argv[]){ int i; /* For each directory in command line */ i = 1; while (i < argc) { list_directory (argv[i]); i++; } /* List current working directory if no arguments on command line */ if (argc == 1) { list_directory ("."); } return EXIT_SUCCESS;}/* * List files and directories within a directory. */static voidlist_directory( const char *dirname){ DIR *dir; struct dirent *ent; /* Open directory stream */ dir = opendir (dirname); if (dir != NULL) { /* Print all files and directories within the directory */ while ((ent = readdir (dir)) != NULL) { switch (ent->d_type) { case DT_REG: printf ("%s\n", ent->d_name); break; case DT_DIR: printf ("%s/\n", ent->d_name); break; case DT_LNK: printf ("%s@\n", ent->d_name); break; default: printf ("%s*\n", ent->d_name); } } closedir (dir); } else { /* Could not open directory */ printf ("Cannot open directory %s\n", dirname); exit (EXIT_FAILURE); }}
源码:
window下载http://www.softagalleria.net/download/dirent/dirent-1.21.zip
0 0
- c语言之ls目录的简单实现和window版本dirent.h
- C语言中的dirent.h说明
- LINUX下用C语言历遍目录 C语言列出目录 dirent.h在C/C++中的使用
- ls的C语言实现
- ls的C语言实现
- Window下使用C语言实现目录的遍历
- ls C语言实现
- linux下用c语言实现ls -l 对文件或者目录的属性遍历
- 命令ls的C语言实现
- /include/linux/dirent.h (版本 0.99.11) 与 /include/linux/dirent.h (版本 0.98) 之间的区别(见红色标记):
- linux ls命令的的简单实现APUE-1.4 文件和目录
- linux c 文件操作编程之获取目录信息的结构体dirent
- Linux C编程学习笔记(5):文件属性操作和目录操作,ls的实现
- [C] dirent.h库函数以及extern语法的介绍
- linux学习之<dirent.h>
- ls的简单实现
- C语言代码实现 ls
- C语言实现ls命令
- Android+ThinkPHP(后台)实现用户登录功能
- 如何让您的网站符合W3C标准
- Session机制、持久化、session="false"属性不创建session、显示创建session及其销毁
- http://chr10003566.github.io/2016/04/20/BluetoothTest/
- 两个有序数组的中位数
- c语言之ls目录的简单实现和window版本dirent.h
- CreateThread和_beginthread的区别及使用
- 使用GDB调试C++
- 测试
- android学习资料整理-----高级篇
- Socket套接字发送图片
- iOS文件操作
- Day6
- 2016-08-25-java-关于都有谁继承了collection接口的一道面试题