了解声明结构及其项目的位置

时间:2014-11-01 04:27:40

标签: c unix struct

我找到了Unix的ls实用程序的简单实现。

#include<stdio.h>
#include<sys/stat.h>
#include<dirent.h>

int main(int argc, char *argv[])
{
    DIR *dp;
    struct dirent *sd;
    dp = opendir(argv[1]);
    while ((sd = readdir(dp)) != NULL) {
        printf("%s\n", sd->d_name);
    }
    closedir(dp);
}

我的主要问题是如何创建结构中的d_name项或它位于何处?它是dirent.h的内置部分吗?

我知道通常会使用这样的原型创建结构:

struct myStructure {
int number;
char name[10];
}

该类型的新变量为struct myStructure Variable

但是在这段代码中,我只看到struct dirent *sd指向dirent结构的指针,如果没有弄错,那么该结构在哪里原型化?

1 个答案:

答案 0 :(得分:3)

结构direntdirent.h中声明如下:

struct dirent {
    unsigned long   d_fileno;   /* file number of entry */
    unsigned short  d_reclen;   /* length of this record */
    unsigned char   d_type;     /* file type, see below */
    unsigned char   d_namlen;   /* length of string in d_name */
#ifdef _POSIX_SOURCE
    char    d_name[255 + 1];    /* name must be no longer than this */
#else
#define MAXNAMLEN   255
    char    d_name[MAXNAMLEN + 1];  /* name must be no longer than this */
#endif
};

有关详细信息,请访问此链接:Source to sys/dirent.h