当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 求助,如果构建目录树
帖子发表于 : 2010-07-05 10:55 

注册: 2009-11-12 20:27
帖子: 67
送出感谢: 0 次
接收感谢: 0 次
仿照书本弄了一个目录树显示程序,但是不够好,要怎么样才能弄成像pstree命令那样的风格,即属于同一层次的都用竖线串起来?

原程序如下:
代码:
#include <stdio.h>
#include <sys/stat.h>
#include <string.h>
#include <stdlib.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/types.h>

void printdir(char *dir,int depth)
{
   DIR *dp;   
   struct dirent *entry;   
   struct stat statbuf;   
   long int curdir;
   
   if(!(dp=opendir(dir)))   
   {
      fprintf(stderr,"cannot open directory: %s\n",dir);
      return;
   }
   
   chdir(dir);
   while(entry=readdir(dp))   
   {      
      lstat(entry->d_name,&statbuf);   
      if(S_ISDIR(statbuf.st_mode))   
      {
         if(strcmp(".",entry->d_name)==0 || strcmp("..",entry->d_name)==0)
            continue;
         printf("%*s|-%s-\n",depth,"",entry->d_name);         
         printdir(entry->d_name,depth+strlen(entry->d_name)+4);   
      }
      else
         printf("%*s|-%s\n",depth,"",entry->d_name);
   }
   chdir("..");   
   closedir(dp);   
}

int main(int argc,char** argv)
{
   char *topdir=".";
   if(argc>=2)
      topdir=argv[1];   
   printdir(topdir,0);
   return 0;
}


:em20


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 求助,如果构建目录树
帖子发表于 : 2010-07-05 10:57 

注册: 2009-11-12 20:27
帖子: 67
送出感谢: 0 次
接收感谢: 0 次
效果如下:
代码:
|-uninstall
|-README
|-legal-
         |-LICENSE.RSA
         |-LICENSE.zlib
         |-LICENSE.distorm_copying.sig
         |-LICENSE.gsoap
         |-LICENSE.sha
         |-LICENSE.bsd
         |-LICENSE.distorm_copying
         |-LICENSE.md5
         |-LICENSE.apache
         |-LICENSE.pcre
         |-LICENSE.dazuko
|-bin-
       |-solaris_sparc-
                        |-aepack.so
                        |-avgu_stats
                        |-antivir_start
                        |-aeemu.so
                        |-aeset.dat
                        |-libgcc_s.so.1
                        |-libdazukoSolaris9.so
                        |-dazuko.conf
                        |-libsavapi3.so
                        |-savapi
                        |-aelidb.dat
                        |-aevdf.dat
                        |-aescn.so
                        |-avgu_stats.lck
                        |-avguard.bin
                        |-aehelp.so
                        |-aegen.so
                        |-libdazukoSolaris10.so
                        |-aeoffice.so
                        |-avlinfo
                        |-aevdf.so
                        |-avupdate.bin
                        |-aerdl.so
                        |-dazuko_5.9
                        |-dazuko_5.10
                        |-avverifier
                        |-avguard-scanner
                        |-aecore.so
                        |-antivir_start.real
                        |-aebb.so
                        |-aeheur.so
                        |-avsavapi-super
                        |-aescript.so
                        |-avupdate_msg.avr
                        |-aesbx.so
                        |-avguard-ondemand-mgmt
                        |-avscan
       |-linux_glibc22-
                        |-aepack.so
                        |-avgu_stats
                        |-antivir_start
                        |-aeemu.so
                        |-aeset.dat
                        |-libsavapi3.so
                        |-savapi
                        |-aelidb.dat
                        |-aevdf.dat
                        |-aescn.so
                        |-avgu_stats.lck
                        |-avguard.bin
                        |-aehelp.so
                        |-aegen.so
                        |-aeoffice.so
                        |-avlinfo
                        |-aevdf.so
                        |-avupdate.bin
                        |-aerdl.so
                        |-avverifier
                        |-avguard-scanner
                        |-aecore.so
                        |-antivir_start.real
                        |-aebb.so
                        |-aeheur.so
                        |-libdazuko3compat2.so
                        |-avsavapi-super
                        |-aescript.so
                        |-libdazuko2.so
                        |-avupdate_msg.avr
                        |-aesbx.so
                        |-avguard-ondemand-mgmt
                        |-avscan
|-contrib-
           |-dazuko-
                     |-dazukofs-3.0.0-rc4_2.6.18.tar.gz
                     |-supported_distros
                     |-dazukofs-3.0.0-rc4_2.6.24.tar.gz
                     |-dazukofs-3.0.0-rc4_2.6.27_ub_os11.1.tar.gz
                     |-dazukofs-3.0.0-rc4_2.6.29-
                                                  |-event.h
                                                  |-test-
                                                          |-lib-
                                                                 |-dazukofs.h
                                                                 |-LICENSE.LGPL-2.1
                                                                 |-dazukofs.c
                                                                 |-Makefile
                                                          |-showfiles.c
                                                          |-Makefile
                                                          |-LICENSE.GPL-2
                                                  |-ign_dev.o
                                                  |-dazukofs.h
                                                  |-.file.o.cmd
                                                  |-README
                                                  |-Module.symvers
                                                  |-.dentry.o.cmd
                                                  |-.mmap.o.cmd
                                                  |-dev.o
                                                  |-group_dev.o
                                                  |-mmap.c
                                                  |-inode.o
                                                  |-dev.c
                                                  |-file.c
                                                  |-event.c
                                                  |-inode.c
                                                  |-super.c
                                                  |-dev.h
                                                  |-dentry.c
                                                  |-dazukofs.ko
                                                  |-group_dev.c
                                                  |-.tmp_versions-
                                                                   |-dazukofs.mod
                                                  |-dazukofs.mod.o
                                                  |-.event.o.cmd
                                                  |-.ign_dev.o.cmd
                                                  |-.dev.o.cmd
                                                  |-dazukofs.mod.c
                                                  |-super.o
                                                  |-.ctrl_dev.o.cmd
                                                  |-dentry.o
                                                  |-.super.c.swp
                                                  |-.group_dev.o.cmd
                                                  |-.dazukofs.o.cmd
                                                  |-event.o
                                                  |-mmap.o
                                                  |-.dazukofs.mod.o.cmd
                                                  |-.super.o.cmd
                                                  |-.dazukofs.ko.cmd
                                                  |-dazukofs.o
                                                  |-ctrl_dev.c
                                                  |-Makefile
                                                  |-file.o
                                                  |-.inode.o.cmd
                                                  |-modules.order
                                                  |-dazukofs_fs.h
                                                  |-.file.c.swp
                                                  |-ctrl_dev.o
                                                  |-CHANGELOG
                                                  |-ign_dev.c
                                                  |-LICENSE.GPL-2
                     |-dazukofs-3.0.0-rc4_2.6.18_RHES5.2.tar.gz
                     |-dazukofs-3.0.0-rc4_2.6.29.tar.gz
                     |-dazukofs-3.0.0-rc4_2.6.16_SLES10SP2.tar.gz
                     |-install_dazuko.sh
                     |-dazukofs-3.0.0-rc4_2.6.26.tar.gz
                     |-dazukofs-3.0.0-rc4_2.6.24_Ubuntu8.04.tar.gz
                     |-dazukofs-3.0.0-rc4_2.6.22_Ubuntu7.10.tar.gz
                     |-dazukofs-3.0.0-rc4_2.6.20.tar.gz
                     |-dazukofs-3.0.0-rc4_2.6.16_SLES10SP1.tar.gz
           |-applet-
                     |-README
                     |-LICENSE
                     |-avira-guard-applet
                     |-install.sh
                     |-avira-guard-applet.c
                     |-extra-
                              |-avguard.conf
                              |-popup_message.sh
                     |-data-
                             |-avira-guard-icon.png
                             |-avira-guard-closed.png
                             |-AvGuardApplet.server
                             |-gnome-panel-avira.png
                             |-avira-guard-open.png
                     |-Makefile
|-LICENSE
|-doc-
       |-antivir_personal_en.txt
       |-avupdater.txt
       |-antivir_server_and_professional_de.pdf
       |-antivir_personal_de.txt
       |-antivir_server_and_professional_de.txt
       |-antivir_server_and_professional_en.pdf
       |-antivir_server_and_professional_en.txt
       |-antivir_personal_en.pdf
       |-antivir_personal_de.pdf
|-install
|-README.uninstall
|-.installrc
|-hbedv_key
|-install_list_guard
|-uninstall_smcplugin.sh
|-LICENSE.DE
|-etc-
       |-file_list
       |-avupdate.conf
       |-avguard.conf
       |-dir_list
       |-avscan.conf
       |-avguard-scanner.conf
       |-run.inf
|-script-
          |-avguard_post.sh
          |-avira_start.sh.template
          |-rcscript
          |-echo_sunos
          |-avguard_start.sh
          |-avguard_restart.sh
          |-post_install.sh
          |-savapi3_post.sh
          |-start_guard_upgrade.sh
          |-sh.avinstall
          |-savapi3_reload.sh
          |-write_fstab.sh
          |-avupdate.template
          |-avguard_stop.sh
          |-smcagent_reload.sh
          |-getsysteminfo
          |-avguardkey_post.sh
|-build.dat
|-vdf-
       |-vbase019.vdf
       |-vbase023.vdf
       |-vbase008.vdf
       |-vbase018.vdf
       |-vbase028.vdf
       |-vbase006.vdf
       |-vbase024.vdf
       |-vbase014.vdf
       |-vbase001.vdf
       |-vbase016.vdf
       |-vbase021.vdf
       |-vbase013.vdf
       |-vbase022.vdf
       |-vbase015.vdf
       |-vbase029.vdf
       |-vbase017.vdf
       |-vbase007.vdf
       |-vbase010.vdf
       |-vbase000.vdf
       |-vbase030.vdf
       |-vbase011.vdf
       |-vbase003.vdf
       |-vbase004.vdf
       |-vbase012.vdf
       |-vbase026.vdf
       |-vbase009.vdf
       |-vbase002.vdf
       |-vbase027.vdf
       |-vbase005.vdf
       |-vbase025.vdf
       |-vbase020.vdf
       |-vbase031.vdf
|-AV_WKS_PERS
|-smcpkg-
          |-src-
                 |-antivir_start.c
          |-libuxsrv.so.linux_glibc22
          |-en-
                |-uxwks.dll
                |-uxwks-upd.conf
                |-uxwks.conf
          |-cert-
                  |-cacert.pem
                  |-client.jks
                  |-server.pem
                  |-cacert.jks
          |-libuxwks.so
          |-libuxsrv.so.solaris_sparc
          |-libuxwks.so.linux_glibc22
          |-scanparameters.txt
          |-setup.inf
          |-libuxwks.so.solaris_sparc



页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译