2013-10-22 3 views
-3

C (Just C++ 또는 #)로 된 작은 프로젝트에서 작업 중이며 파일을 스캔 할 수있는 방법이 있는지 궁금합니다 (Say 그 이름과 확장자 만)?C에서 컴퓨터 파일 검색

도움을 주셔서 감사합니다.

+5

"검색"이란 무엇을 의미하는지 알 수 없습니다. –

+0

가능한 중복 [어떻게 C에서 디렉토리 목록을 가져 옵니까?] (http://stackoverflow.com/questions/12489/how-do-youget-a-directory-listing-in-c) –

+0

어떤 검사가 의미하는지 알지 못해? ... 나는 그것이 일반적인 용어 였지만. 나는 그 이름과 확장을 위해 파일을 조사하는 것을 의미합니다. 그 라인을 따라 뭔가. – user2908228

답변

0

다른 포럼에서이 질문을했으며 거의 ​​즉시 대답을 얻었습니다.

#include <stdio.h> 
#include <sys/types.h> 
#include <dirent.h> 

int main (void) 
{ 
    DIR *dp; 
    struct dirent *ep;  
    dp = opendir ("./"); 
    const int MAXFILES = 100; 
    char list[MAXFILES][256]; 
    int c = 0; 

if (dp != NULL) 
    { 
     while ((ep = readdir (dp)) && (c < MAXFILES)){ 
      strcpy(list[c],ep->d_name); 
      ++c; 
     } 

(void) closedir (dp); 
    } 
    else 
     perror ("Couldn't open the directory"); 

return 0; 
} 
1

당신은 모든 파일 (및 폴더)에서 인쇄 할이 코드를 사용하여 (다음 예 현재 작업 예) 폴더의 내용을 읽을 수 있습니다 : 당신은 물론 개별 파일을 구문 분석 할 수

#include <stddef.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <dirent.h> 

int main (void) { 

     DIR *dp; 
     struct dirent *ep; 
     dp = opendir("."); // open the current directory 
     if (dp != NULL) { 
     while ((ep = readdir(dp)) != NULL) {  // read its content one by one 
      printf("%s\n", ep->d_name); 
     } 
     closedir(dp); // close the handle 
    } 
     else 
     perror("Can not access dir"); 
return 0; 
} 

을 다음 단계에서 확장에 대한 이름. 이 예제는 Linux 용입니다.

+0

이 방법을 사용하여 디렉터리 내용을 변수 또는 배열에 저장하는 방법이 있습니까? – user2908228

+0

@ user2908228 을 포함하는 경우'char fname []'을 정의하고'while' 루프에서'strcpy (fname, ep-> d_name)'을 사용하여'fname'에'ep-> d_name'의 내용을 할당 할 수 있습니다. 이 경우 fname은 매번 덮어 씁니다. 그러나 파일을 하나씩 처리하려는 경우 (예 : exentsion을 구문 분석하는 경우) 괜찮습니다. – PhillipD

+0

알았어, 고마워. 그 코드를 보여 주시겠습니까? 괜찮 으면. – user2908228