2014-02-16 2 views
0

나는 dirent.h를을 사용하여 Windows 경로에있는 모든 파일과 하위 디렉토리를 표시하기 위해 노력하고있어이 지금까지 내 코드입니다 :왜 이러한 점은 나타나지 않습니다 (C++ dirent.h를)

void print_dir(char* path, char* subdir) 
{ 
    char full_path[MAX_PATH]; 

    concat_path(full_path, path, subdir); 

    DIR *dir; 
    struct dirent *ent; 

    if ((dir = opendir (full_path)) != NULL) { 
     /* print all the files and directories within directory */ 
     while ((ent = readdir(dir)) != NULL) { 
      if(is_dir(full_path, ent->d_name)){ 
       printf ("DIR %s\\%s\n",full_path, ent->d_name); 
       print_dir(full_path, ent->d_name); 
      } 
      else{ 
       printf ("%s\\%s\n",full_path, ent->d_name); 
      } 
     } 
     closedir (dir); 
    } else { 
     /* could not open directory */ 
     perror (""); 
    } 
} 

나는 D : \ test에 각각의 파일이있는 두 개의 하위 디렉토리가 있고 함수가 무한 재귀에서 멈추고 \.\.\.\.\.\. 무한대로 표시됩니다. 이름이 "."인지 확인하기 위해 조건을 입력하면. 또는 ".."그리고 아무것도하지 않을 경우 모든 것이 계획대로 작동합니다. 그렇다면이 점들은 무엇입니까?

+2

http://stackoverflow.com/questions/8411931/what-does-dot-and-dotdot-means – user2120666

+0

점과 점에 대한 이름을 확인하는 것이 좋은 습관인지 또는 다른 조치를 취해야한다고 말할 수 있습니까? – user2419750

답변

2

이 점들은 디렉토리이거나 최소한 디렉토리에 대한 링크입니다. 모든 디렉토리에는 최소한 두 개의 하위 디렉토리가 있습니다. 그리고 "." 디렉토리는 현재 디렉토리 자체를 가리키고 ".."디렉토리는 상위 디렉토리를 가리 킵니다. 창에서 두 디렉토리는 탐색기에 표시되지 않지만 명령 프롬프트에서 "dir"을 입력하여 표시 할 수 있습니다. BTW : 리눅스 시스템에서는 거의 모든 쉘에 "ls -a"를 입력하여 표시 할 수 있습니다.

+0

"."뒤에 정확한 논리가 무엇인지 설명 할 수 있습니까? 디렉토리는 무엇입니까? 폴더에 저장하는 것이 어떤 의미인지 이해하지 못합니다. – Tara