获取C中的目录列表

时间:2012-07-24 22:18:25

标签: c visual-studio-2010 directory

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

有人可以启发我1)实际获得一个目录列表和2)我在选择的搜索条件中做错了,我无法找到我认为应该是一个相对常见的问题。

2 个答案:

答案 0 :(得分: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|");
}

答案 1 :(得分:0)

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

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