您的位置:首页 > 其它

列出一个目录中的所有文件

2016-07-26 23:25 316 查看
#include "apue.h"

#include <dirent.h>

#include <errno.h>

#include <stdarg.h>

/*

 * print a message and return to caller.

 * Caller specifies "errnoflag"

 */

static void err_doit(int errnoflag,int error,const char *fmt, va_list ap)

{

   char   buf[MAXLINE];

   vsnprintf(buf, MAXLINE, fmt, ap);

   if(errnoflag)

      snprintf(buf+strlen(buf),MAXLINE-strlen(buf),": %s",strerror(error));

   strcat(buf, "\n");

   fflush(stdout);    /* in case stdout and stderr are the same */

   fputs(buf,stderr);

   fflush(NULL);      /* flushes all stdio output streams */

   

       

}

/*

 * Fatal error related to a system call

 * Print a message and terminate.

 */

void err_sys(const char *fmt, ...)

 {

   va_list ap;

   va_start(ap, fmt);

   err_doit(1,errno,fmt,ap);

   va_end(ap);

   exit(1);

 }

 /*

  * Fatal error unrelated to a system call

  * print a message and terminate.

  */

void err_quit(const char *fmt, ...)

{

  va_list ap;

  va_start(ap, fmt);

  err_doit(0,0,fmt,ap);

  va_end(ap);

  exit(0);

}

int main(int argc,char *argv[])

{

  DIR        *dp;

  struct dirent   *dirp;

  if(argc != 2)

     err_quit("usage: ls directory_name");

  if((dp = opendir(argv[1])) == NULL)

     err_sys("can't open %s",argv[1]);

  while((dirp = readdir(dp)) != NULL)

     printf("%s\n",dirp->d_name);

  closedir(dp);

  exit(0);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: