C 如何列出文件/目录的数量
我编写了这个函数,它实际列出了给定目录的内容。但是,我想让它告诉我有多少文件和多少目录。我试过这样的方法,但都不管用:C 如何列出文件/目录的数量,c,unix,C,Unix,我编写了这个函数,它实际列出了给定目录的内容。但是,我想让它告诉我有多少文件和多少目录。我试过这样的方法,但都不管用: if(dir->d_type == D_DIR) directories++; 这是我的密码。如何修改它: #include <stdio.h> #include <sys/types.h> #include <dirent.h> #include <sys/stat.h> int main (void) {
if(dir->d_type == D_DIR)
directories++;
这是我的密码。如何修改它:
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
int main (void) {
DIR *d = opendir (".");
struct dirent *dir;
if (d != NULL) {
int files, directories = 0;
while(dir=readdir(d))
puts(dir->d_name);//Prints the actual names of the entries
//Closing the directory
(void) closedir (d);
} else
perror ("Couldn't open the directory");
return 0;
}
#包括
#包括
#包括
#包括
内部主(空){
DIR*d=opendir(“.”);
结构方向*dir;
如果(d!=NULL){
int文件,目录=0;
while(dir=readdir(d))
put(dir->d_name);//打印条目的实际名称
//关闭目录
(d)第(d)款;
}否则
perror(“无法打开目录”);
返回0;
}
我猜到了。以下是我的代码供将来参考(如果其他人需要):
#包括
#包括
#包括
#包括
内部主(空){
DIR*d=opendir(“.”);
结构方向*dir;
如果(d!=NULL){
int文件,目录=0;
而((dir=readdir(d))!=NULL){
if(dir->d_type==DT_REG)
文件++;
if(dir->d_type==DT_dir)
目录++;
}
//关闭目录
(d)第(d)款;
printf(“%i个文件和%i个目录\n\n”,文件,目录);
}否则
perror(“无此类目录”);
返回0;
}
“不工作”意味着它崩溃,而是打印出您的密码,或者不产生(明显正确的)结果?无论如何,请尝试使用宏if(S_ISDIR(S.st_模式))
。阅读ls
的源代码,这会增加文件,但不会增加目录。我知道。我后来补充说。这只是另一个假设。但是在这里。我将把它添加到代码中。
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
int main (void) {
DIR *d = opendir (".");
struct dirent *dir;
if (d != NULL) {
int files, directories = 0;
while((dir=readdir(d)) != NULL) {
if (dir->d_type == DT_REG)
files++;
if(dir->d_type == DT_DIR)
directories++;
}
//Closing the directory
(void) closedir (d);
printf("%i Files and %i directories\n\n", files, directories);
} else
perror ("No such directory");
return 0;
}