#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
char *newpath(char pathname[], char dirname[]) {
char *s;
s = calloc(256, 1);
if(s==NULL) return s;
strcpy(s, pathname);
strcat(s, "\\");
strcat(s, dirname);
return s;
}
int dirlist(char path[]) {
WIN32_FIND_DATA ffd;
HANDLE hFind;
char *dirnames[100];
int i, k=0;
hFind = FindFirstFile(newpath(path, "*.*"), &ffd);
if (hFind == INVALID_HANDLE_VALUE) {
printf ("FindFirstFile failed (%d)\n", GetLastError());
return 0;
}
FindNextFile(hFind, &ffd); // for .
FindNextFile(hFind, &ffd); // for ..
do {
if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
dirnames[k]=newpath(path, ffd.cFileName);
printf("[%s]\n", dirnames[k]);
++k;
}
else {
printf("%s\n", ffd.cFileName);
}
} while (FindNextFile(hFind, &ffd) != 0);
FindClose(hFind);
for(i=0;i<k;++i) {
printf("[[%s]]\n", dirnames[i]);
}
return 0;
}
int main(int argc, char *argv[]) {
dirlist(argv[1]); // usage "filelist [path name]"
return 0; // [path name] is a full path name
}
'c·c++ > c 프로그래밍' 카테고리의 다른 글
합집합, 교집합, 차집합 (0) | 2013.04.11 |
---|---|
진동하는 배너 (0) | 2013.04.07 |
확장된 유클리트 알고리즘 (gcd 최대공약수) 구하기 (0) | 2013.01.29 |
strtok source (0) | 2012.12.02 |
연결리스트를 이용한 다항식의 구현 (0) | 2012.12.01 |