显示文件类型的函数

时间:2013-12-01 02:50:16

标签: c unix ls

我想编写unix系统ls

但是当我想要获得类型时,我是新手并且遇到了问题...... 我的程序显示随机类型值。 我必须向我的函数发送什么参数?

哦,我不想使用任何全球价值

这是我的功能:

void    my_get_type(const mode, struct direct *d)
{
  if (S_ISREG(mode))
    my_printf("-");
  if (S_ISDIR(mode))
    my_printf("d");
}

我发送的论点有我的主要内容:

int     main(int argc, char **argv)
{
  DIR           *dir;
  struct direct *d;
  struct stat   buffer;
  char          *directory;
  int           j;
  int           i;

  j = 0;
  i = 0;
  dir = opendir(".");
  if (dir == NULL)
    {
      my_printf("no directory");
      return (0);
    }
  while (argv[i])
    {
      if (argv[i][j] == '-')
        {
          ++j;
          if (argv[i][j] == 'l')
            {
              while (d = readdir(dir))
                {
                  my_get_type(buffer.st_mode, d);
                  //my_get_droits();                                            
                  //my_get_size();                                              
                  //user soon                                            
                  //4096 ?                                                      
                  //my_get_time();                                              
                  my_printf("%s\n", d->d_name);
                }
            }
        }
      else
        ++i;
    }
  while (d = readdir(dir))
    my_printf("%s ", d->d_name);
  closedir(dir);
}

如果你有像我这样的初学者的任何其他提示......那会让我开心^^

1 个答案:

答案 0 :(得分:2)

my_get_type(buffer.st_mode, d);

buffer在这里未初始化。