ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. »ç¿ë¹ý#include <dirent.h>
int scandir(const char *dir, struct dirent ***namelist,
int(*select)(const struct dirent *),
int(*compar)(const struct dirent **, const struct dirent **));
int alphasort(const void *a, const void *b);
int versionsort(const void *a, const void *b);
¼³¸í
scandir()ÇÔ¼ö´Â ÁÖ¾îÁø µð·ºÅ丮 dirÀ» °Ë»öÇϸç, °¢°¢ÀÇ µð·ºÅ丮¿ä¼Ò¸¦ ¹ß°ßÇÒ ¶§¸¶´Ù select ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ¶ÇÇÑ comparÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ¼ÒÆ®¸¦ ÇÒ ¼öµµ ÀÖ´Ù. qsort() ÇÔ¼öµîÀ» »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¿¹Á¦¼³¸í
µð·ºÅ丮¿¡ ÀÖ´Â ¸ðµç ÆÄÀϵéÀ» °Ë»çÇÏ´Â ÇÔ¼ö ÀÔ´Ï´Ù. °Ë»çµÈ ÆÄÀÏÀ» À§ÇÑ ÀÛ¾÷À» À§Çؼ ÇÔ¼ö Æ÷ÀÎÅ͸¦ µî·ÏÇØ¼ »ç¿ëÇϵµ·Ï ÀÛ¼ºµÇ¾î ÀÖÀ¸¸ç, µð·ºÅ丮 ±íÀÌ °Ë»ç¸¦ À§ÇÑ ±â´Éµµ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. »ç¿ë¹æ¹ý
´ÙÀ½Àº ÇÔ¼ö ¼±¾ðÀÔ´Ï´Ù. Scandir(char *cwd, void(*func)(char *), int depth)
// ´Ü¼ø Ãâ·ÂÇÑ´Ù. void myfunc(char *file) { print("--> %s\n", file); } int main() { // homeµð·ºÅ丮¿¡ ÀÖ´Â ¸ðµç ÆÄÀϰú ±× ÇϺεð·ºÅ丮ÀÇ ÆÄÀÏÀ» // °Ë»öÇÑÈÄ myfunc¸¦ È£ÃâÇØ¼ ´Ü¼ø Ãâ·ÂÇÑ´Ù. Scandir("/home", myfunc, 0); } ÄÚµå#include <sys/stat.h> #include <dirent.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> static int indent = 0; char cdir[256]; void myfunc(char *file) { printf("%s/%s\n", getcwd(cdir, 256),file); } void Scandir(char *wd, void (*func)(char *), int depth) { struct dirent **items; int nitems, i; // ÀÎÀÚ·Î ¹ÞÀº µð·ºÅ丮·Î À̵¿ÇÑ´Ù. if (chdir(wd) < 0) { printf("DIR : %s\n", wd); perror("chdir "); exit(1); } // scandir ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ÇöÀç µð·ºÅ丮ÀÇ // ¸ðµç ÆÄÀϰú µð·ºÅ丮ÀÇ ³»¿ëÀ» °¡Á®¿Â´Ù. nitems = scandir(".", &items, NULL, alphasort); // µð·ºÅ丮(ÆÄÀÏÆ÷ÇÔ) Ç׸ñÀÇ °¹¼ö¸¸Å ·çÇÁ¸¦ µ¹¸®¸ç // ¸¸¾à ÇØ´ç ÆÄÀÏÀÌ µð·ºÅ丮 Àϰæ¿ì // Scandir ÇÔ¼ö¸¦ Àç±Í È£ÃâÇÑ´Ù. for (i = 0; i < nitems; i++) { // ÆÄÀÏ »óŸ¦ ÀúÀåÇϱâ À§ÇÑ ±¸Á¶Ã¼ struct stat fstat; // ÇöÀçµð·ºÅ丮, ÀÌÀüµð·ºÅ丮 ´Â ¹«½ÃÇÑ´Ù. if ( (!strcmp(items[i]->d_name, ".")) || (!strcmp(items[i]->d_name, "..")) ) { continue; } // ÇÔ¼öÆ÷ÀÎÅ͸¦ È£ÃâÇÑ´Ù. ÀÎÀÚ·Î °Ë»öÇÑ ÆÄÀÏÀ̸§ÀÌ ³Ñ¾î°£´Ù. func(items[i]->d_name); // ¸¸¾à ÆÄÀÏÀÌ µð·ºÅ丮 À̶ó¸é // Scandir À» Àç±Í È£ÃâÇÑ´Ù. // ±×¸®°í µð·ºÅ丮ÀÇ depth ·¹º§À» 1 Áõ°¡ ÇÑ´Ù. lstat(items[i]->d_name, &fstat); if ((fstat.st_mode & S_IFDIR) == S_IFDIR) { // depth¸¸Å¸¸ ÇϺΠµð·ºÅ丮°Ë»öÀ» ÇÑ´Ù. // 0ÀÏ °æ¿ì ±íÀÌ¿¡ °ü°è¾øÀÌ °Ë»öÇÑ´Ù. if (indent < (depth-1) || (depth == 0)) { indent ++; Scandir(items[i]->d_name, func, depth); } } } // µð·ºÅ丮ÀÇ depth ·¹º§À» 1 °¨¼Ò½Ã۰í // ÇÏÀ§ µð·ºÅ丮·Î À̵¿ÇÑ´Ù. indent --; chdir(".."); } |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|