2013-07-17 1 views
0

디렉토리 이름이 입니다.입니다. 코드 위디렉토리의 파일을 표시합니다.

#include <stdio.h> 
#include <string.h> 
#include <dirent.h> 
int main (int argc, char *argv[]) 
{ 
    DIR *directory; 
    struct dirent *file;  
    directory = opendir (argv[1]); 
    if (directory != NULL){ 
     while (file = readdir (directory)) 
       printf("FILE : %s \n",file->d_name); 

     (void) closedir (directory); 
     } 
    else 
     printf("Not able to open the directory\n"); 
    return 0; 
} 

과 실제 출력을 제공 : 내가 C 프로그램이 디렉토리

코드 디렉토리에서 모든 파일을 표시하려면 다음을 쓴

12.07.2013 
13.07.2013 
14.07.2013 
15.07.2013 
16.07.2013 
17.07.2013 

위해 파일을 다음 포함

FILE : 14.07.2013 
FILE : 13.07.2013 
FILE : 17.07.2013 
FILE : . 
FILE : 15.07.2013 
FILE : .. 
FILE : 12.07.2013 
FILE : 16.07.2013 

제가 직접 적절한 순서로 파일 diplaying & 배치 디렉토리에 파일을 볼 때

FILE : 12.07.2013 
FILE : 13.07.2013 
FILE : 14.07.2013 
FILE : 15.07.2013 
FILE : 16.07.2013 
FILE : 17.07.2013 

아래와 같이 올바른 순서 ED 출력.

위의 C 코드가 올바른 순서로 파일을 읽지 못하는 이유는 파일을 무작위로 읽는 것입니다.

근무 환경 : 리눅스 (ubuntu12.04), GCC 컴파일러

감사

+0

어떤 파일 시스템입니까? –

답변

3

그것은 무작위로 파일을 읽어 아니에요, 그냥이 디렉토리 파일 자체에 저장된 순서로 디렉토리 목록을 읽는 것. "직접 디렉토리에있는 파일을 볼 때"라는 말은 사용자가 ls을 사용하고 있다고 가정하지만 은 입니다. 출력 전에 결과는입니다. 일치하는 출력을 원하면 동일한 작업을 수행해야합니다.

+0

..'readdir()'은'.'로 시작하는 파일 이름을 제외시키지 않으므로'ls -a'에서와 같이'.'와'..'를 보게됩니다 –

+0

답장을 보내 주셔서 감사합니다. @ carl : 디렉토리 파일 자체에 저장됩니다. " – sujin

+1

@sujin 디렉토리도 파일입니다. 그들은 이미지, 텍스트 파일 또는 데이터베이스 또는 다른 것 대신 다른 파일에 대한 참조 목록을 포함합니다. –

관련 문제