免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1653 | 回复: 1
打印 上一主题 下一主题

[C] 遍历目录程序中的缩进4个空格之实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-13 16:24 |只看该作者 |倒序浏览
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>

#include <string.h>
#include <sys/stat.h>
#include <stdlib.h>

void printdir(char *dir,int depth)
{
  DIR *dp;
  struct dirent *entry;
  struct stat statbuf;

  if((dp=opendir(dir))==NULL)
  {
    fprintf(stderr,"cannot open directory:%s\n",dir);
    return;
  }
  chdir(dir);
  while((entry=readdir(dp))!=NULL)
  {
    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+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];

  printf("Directory scan of /home:\n");
  printdir(topdir,0);
  printf("Done.\n");
}
以上为实现代码,并且能实现遍历目录并显示目录下的文件,子目录显示实现缩进4个空格。
问题:
printf("%*s%s/\n",depth,"",entry->d_name);
1)*号作用是什么,我看过有不同的C介绍,说法不一,但都不能解释最终实现功能;
2)两个格式控制符,后面却带了三个输出量。
谢谢。

论坛徽章:
0
2 [报告]
发表于 2008-03-13 16:52 |只看该作者
*对应的depth.

man 3 printf
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP