我找到了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
结构的指针,如果没有弄错,那么该结构在哪里原型化?
答案 0 :(得分:3)
结构dirent
在dirent.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