我不得不相信这个问题一定已经被回答过多次了,但我找不到。使用 Visual Studio C(不是 C++ 或 C#),如何获取另一个目录中的目录列表?我试过搜索“获取目录列表”和“获取文件夹列表”和“在目录中查找文件夹”。
有人可以告诉我 1) 实际上得到一个目录列表和 2) 我在选择搜索词时做错了什么,我无法找到我认为应该是一个相对常见的问题。
我不得不相信这个问题一定已经被回答过多次了,但我找不到。使用 Visual Studio C(不是 C++ 或 C#),如何获取另一个目录中的目录列表?我试过搜索“获取目录列表”和“获取文件夹列表”和“在目录中查找文件夹”。
有人可以告诉我 1) 实际上得到一个目录列表和 2) 我在选择搜索词时做错了什么,我无法找到我认为应该是一个相对常见的问题。
EX:编译为Dirc.exe,用法:dirc -d [目录]
#include <stdio.h>
#include <dirent.h>
int main();
void get_args();
void help();
void get_args(int argc, char** argv)
{
int i;
for (i = 1; i < argc; i++) {
if (argv[i][0] == '-') {
switch (argv[i][1]) {
case 'd': for (i = 2; i < argc; i++){
struct dirent *dp;
DIR *dfd = opendir(argv[i]);
if(dfd != NULL) {
while((dp = readdir(dfd)) != NULL)
printf("%s\n", dp->d_name);
closedir(dfd);
}
}
break;
default:
fprintf(stderr,
"\nERROR: Unknown switch %s\n", argv[i]);
help();
}
} else {
for (i = 1; i < argc; i++){
printf("%s ", argv[i]);}
}
}
}
int main(int argc, char** argv)
{
get_args(argc, argv);
if (argc==1){ help();}
}
void help()
{
printf("\n Usage: dirc.exe [Arguments] [Dir]\n");
printf(" Example: dirc -y words\n");
printf("\n Arguments:");
printf("\n -d |Directory|");
}
NTDLS的答案应该可以解决您的问题:
Listing directory contents using C and Windows
您必须更改功能,以便跳过文件,但这不应该是问题。如果您不想列出子目录的所有文件夹:在 if 语句中省略递归调用。