다운/퍼 가실 때 댓글 부탁드려요. 그리고 받으신 자료 유료 레포트 사이트에 올리지 말아주세요.




첨부파일 : 소스코드 + 설계문서


본문 내용 일부



2. 프로그램 구조

가. Flow Chart

1) 프로그램이 수행되면 3가지의 인자를 받게 된다. 찾을 위치인 path, 어떤 형식으로 찾을지에 대한 option, 그리고 찾을 파일명인 pattern을 받는다.

2) 만약 정확한 인자를 받지 못하였다면 프로그램은 종료되고, 그렇지 않다면 찾을 위치로 받은 path를 open하여 해당 디렉토리 엔트리를 검색하게 된다. 만약 엔트리 중에서 디렉토리가 존재하면 다시 그 내부로 들어가는 재귀적인 탐색을 수행하게 된다.

3) 엔트리가 디렉토리가 아니면 option에 따른 출력 여부를 결정하게 된다. 옵션의 종류에는 이름, 권한, 소유자, 그룹, 타입이 있는데 해당 옵션이 설정된 곳으로 이동하여 엔트리와 pattern이 일치하게 되면 해당 엔트리를 화면에 출력하고 다음 엔트리를 읽어온다.

나. * 인자 처리

1) 알고리즘

 

위의 그림은 인자 중에서 ‘*’문자가 포함된 인자가 들어왔을 경우 디렉토리 엔트리와 어떻게 비교하는지를 보여주고 있다.

일단 ‘*’가 문자열 앞에 포함되어있을 때를 살펴보면, *를 제거한 pattern의 문자열 길이는 2이다. 비교할 엔트리인 "lsab"의 경우 길이가 4인데, 두 문자열을 비교시 디렉토리 엔트리 "lsab"의 길이에서 pattern의 길이를 빼어서 그 차이만큼 엔트리의 문자열 첫 포인터 위치를 이동시킨다.

그러면 그림처럼 문자열을 가리키는 포인터는 a를 가리키게 되고, 이 때 두 문자열을 strcmp() 함수를 이용해 비교하면 같음을 확인하게 되고, 디렉토리 엔트리를 출력해주면 된다.

④ ‘*’가 문자열 뒤에 포함되어 있는 경우도 이와 비슷하며 엔트리와 pattern 길이의 차만큼 엔트리의 뒷 문자를 제거한 뒤 비교하면 된다. 그러면 위 그림과 같이 밝은 부분으로 된 부분만 같게 되고, 결국 결과는 두 문자열이 일치한다고 판단되어 엔트리를 출력한다.


저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License