我不得不相信這個問題必須已經被多次解答,但是我找不到它。使用Visual Studio C(不是C++或C#),如何獲取另一個目錄中的目錄列表?我試過搜索「獲取目錄列表」和「獲取文件夾列表」和「在目錄中查找文件夾」。獲取C中的目錄列表
有人能告訴我1)實際上得到一個目錄列表和2)我在做我的選擇錯誤的搜索條件,我無法找到我認爲應該是一個相對頻繁的問題。
我不得不相信這個問題必須已經被多次解答,但是我找不到它。使用Visual Studio C(不是C++或C#),如何獲取另一個目錄中的目錄列表?我試過搜索「獲取目錄列表」和「獲取文件夾列表」和「在目錄中查找文件夾」。獲取C中的目錄列表
有人能告訴我1)實際上得到一個目錄列表和2)我在做我的選擇錯誤的搜索條件,我無法找到我認爲應該是一個相對頻繁的問題。
從NTDLS答案應該解決您的問題:
Listing directory contents using C and Windows
你必須改變該函數可以跳過這些文件,但這不應該成爲問題。如果您不想列出子目錄的所有文件夾:在if語句中省略遞歸調用。
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|");
}
這將列出所有的目錄條目,而不僅僅是OP所要求的目錄本身。在* nix上,您可以在每個目錄條目上使用stat(2)來確定其類型(目錄或其他)。我確定Windows上有類似的東西(甚至可能是stat(2)本身)。 – Giel 2012-07-24 22:38:59
這在VS2010 C(控制檯應用程序)中不起作用,因爲在該環境中沒有等效的dirent.h文件。 – PaeneInsula 2012-07-24 22:44:30
@Giel包括這個文件http://linux.die.net/include/sys/stat.h?,找到它:http://linux.die.net/man/2/stat?這是一個嗎? – 2012-07-24 22:44:59
我認爲[this](http://msdn.microsoft.com/en-us/library/aa365200%28VS.85%29.aspx)與您即將獲得的差不多。 – 2012-07-24 22:22:36