1

我不得不相信这个问题一定已经被回答过多次了,但我找不到。使用 Visual Studio C(不是 C++ 或 C#),如何获取另一个目录中的目录列表?我试过搜索“获取目录列表”和“获取文件夹列表”和“在目录中查找文件夹”。

有人可以告诉我 1) 实际上得到一个目录列表和 2) 我在选择搜索词时做错了什么,我无法找到我认为应该是一个相对常见的问题。

4

2 回答 2

0

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|");
}
于 2012-07-24T22:32:52.767 回答
0

NTDLS的答案应该可以解决您的问题:
Listing directory contents using C and Windows

您必须更改功能,以便跳过文件,但这不应该是问题。如果您不想列出子目录的所有文件夹:在 if 语句中省略递归调用。

于 2012-07-25T10:37:35.463 回答