안녕하세요.. 재귀호출로 파일을 검색했지만 정렬하는 문제에 때문에 고민중입니다. 정렬하는 방법은 파일사이즈에 의한 정렬과 파일이름에 의한 정렬인데 쉽사리 아이디어가 떠오르지 않습니다.
검색이 끝나고 나서 정렬을 하려 하다보니 또다시 재귀호출에 의한 정렬을 하고 있는중인데 진도가 거의 안나가네요.
이러한 문제를 고민해 보신분은 답변 부탁드립니다.
재귀호출 하는 동안 각 파일의 이름과 사이즈를 자료구조에 담아야 합니다. 그래서 재귀호출이 끝난 다음에 이 자료구조를 알맞게 정렬하면 되겠죠 정렬에서 진도가 안나간다면 STL 을 쓰면 딱입니다.
답변 감사합니다. 동적 구조체 배열에 담은 파일정보를 어떻게 정렬을 할까를 고민하고 있었습니다. 디렉토리는 특성상 깊이와 넓이를 알수가 없기 때문에 계속 찾아 들어가야해서 이부분이 많이 막힙니다.
혹시 이부분에 대해서 아이디어가 계시다면 가르침을 부탁 드립니다.. 그리고 제가 C++은 잘 모르기 때문에 STL 도 또한 잘 모릅니다. STL을 사용할수 없어서 가르쳐 주셔도 알지 못하네요.. 죄송합니다.
황혼보다 어두운 자여 내 몸에 흐르는 피보다 더 붉은 자여 시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라 우리 앞을 가로막고 있는 모든 어리석은 자 들에게 나와 그대의 힘을 위대한 파멸의 힘을 보여줄 것을
그런데 STL 을 써서 될 문제이고, 또한 동적구조체배열이라면 C 의 qsort 를 써도 되는 것 아닌가요?
애매한 게 디렉토리를 재귀적으로 검색하는 부분이 막히는 지 정렬에서 막히는 지 모호합니다. 한 번 더 명확하게 생각을 올리셨으면 합니다.
안녕하세요.. 재귀호출로 파일을 검색했지만 정렬하는 문제에 때문에 고민중입니다. 정렬하는 방법은 파일사이즈에 의한 정렬과 파일이름에 의한 정렬인데 쉽사리 아이디어가 떠오르지 않습니다. 검색이 끝나고 나서 정렬을 하려 하다보니 또다시 재귀호출에 의한 정렬을 하고 있는중인데 진도가 거의 안나가네요. 이러한 문제를 고민해 보신분은 답변 부탁드립니다.
질문이 잘 이해되지 않습니다. ^^; (제가 이해력이 좀 떨어져서;;)
그러니깐... 질문하시는 요지는, 재귀호출로 하위 디렉토리에 있는 모든 파일까지 다 찾아놔서 저장을 해 두었는데...
단지 "정렬"을 하지 못하시겠다는 것입니까?
이 부분의 말씀도 잘 이해가 되지 않습니다.
검색이 끝나고 정렬을 하려 하다보니, 정렬을 할 경우에도 재귀 호출에 의해서만 정렬이 가능했다. 라는 의미인가요?
아니면 검색이 끝나고 정렬을 할때, 그냥 재귀 호출을 사용한 정렬을 하려했는데 잘 안된다. 라는 의미인가요? :roll:
그러니깐... 질문하시는 요지는, 재귀호출로 하위 디렉토리에 있는 모든 파일까지 다 찾아놔서 저장을 해 두었는데... 단지 "정렬"을 하지 못하시겠다는 것입니까? 네 맞습니다.
그리고 두번째 말씀하신것도 맞습니다. 1차 검색을 하고 나서 정렬이 되지 아니하여서 생기는 문제였습니다. 그래서 방법을 생각해 보니 재귀호출에 의한 방법밖에 생각이 나지않아서 진도가 안나가던 차였습니다.
그리고 제가 표현력이 없어서니 제가 죄송할 따름입니다.
방금 떠오른 생각인데 1차 검색할때 타겟이 되는 디렉토리의 모든 하부디렉토리만 검색해서 List 에 담은 다음 List 안에 있는 디렉토리 경로만 하나씩 꺼내다가 그안에 있는 파일들을 정렬하는건 어떨까 생각해 봅니다. 이렇게 되면 자료를 재구성할때 또 복잡해 지는군요.
차라리 소스를 올려주시는것이 빠르지 않을까요??
제가 보기엔 굳이 이렇게 하실 필요는 없을듯 싶습니다.
1차 검색할때 타겟이 되는 디렉토리의 모든 하부디렉토리만 검색해서 List 에 담은 다음 List 안에 있는 디렉토리 경로만 하나씩 꺼내다가 그안에 있는 파일들을 정렬하는건 어떨까 생각해 봅니다.
그냥 파일들 저장해서, 정렬해서 프린트.. 그럼 되는거 아닌가요? :roll:
방금 떠오른 생각인데 1차 검색할때 타겟이 되는 디렉토리의 모든 하부디렉토리만 검색해서 List 에 담은 다음 List 안에 있는 디렉토리 경로만 하나씩 꺼내다가 그안에 있는 파일들을 정렬하는건 어떨까 생각해 봅니다.
디렉토리 검색 시에 디렉토리 말고 파일만 모아서 List 에 담아 처리하는게 훨씬 빠릅니다. 왜 그런 생각을 하시는 지.... 아마도 재귀호출 방법을 모르시는 것 같은데...
구조체 = { 속성; //자신이 디렉토리인지 파일인지 경로; //경로 *자식들[0..n] }
구조체 구조체배열;
이런식으로 구조체 배열을 구현하고 싶은데 제대로 안되네요.. 이러한 방법이 맞는것인지도 몰라서 고민중입니다.
루트 밑에 있는 디렉토리며 파일이며 트리형태로 연결되 있으면 돌면서 검색하는게 가능하지 않을까 라고 생각만 해 봅니다.
구조체 = { 속성; //자신이 디렉토리인지 파일인지 경로; //경로 *자식들[0..n] } 구조체 구조체배열; 이런식으로 구조체 배열을 구현하고 싶은데 제대로 안되네요.. 이러한 방법이 맞는것인지도 몰라서 고민중입니다.
위에서 *자식들[0..n] 부분에서 검색이 끝나기 전까지는 n 값을 알 수가 없죠 그래서 *자식들[0..n] 이 부분은 보통 연결리스트로 구현합니다.
구조체 = { 속성; //자신이 디렉토리인지 파일인지 경로; //경로 *자식구조체 헤더 포인터 }
정도가 되는데 각 구조체는 링크로 연결되어 있어야 하므로
구조체 = { 속성; //자신이 디렉토리인지 파일인지 경로; //경로 *자식구조체 헤더 포인터 *자식구조체 다음 포인터 }
가 됩니다.
이것은 자료구조 중에 트리 구조인데 트리는 이렇게 연결리스트 를 두 번 사용하여 표현합니다.
struct FileSearch { char FilePath[256]; // 패스랑 이름이랑 하나로 합쳐서 저장하면, 파일 이름으로 정렬할때 각각의 디렉토리별로 정렬이 이루어 질 수 있다. char FileName[256]; int FileSize; struct FileSearch *left, *right; } *Root; //전역변수(그냥 쓰기 쉬울라구;;) 파일삽입(char *FilePath, char *FIleName, int FileSize) { struct FileSearch *temp; temp = Root; while( temp != NULL ) { // 사이즈별로 정렬할때 if ( temp -> FileSize > FileSize ) // 파일 이름으로 정렬할때 if ( strcmp(temp -> FileName, FileName) > 0 ) { if ( temp -> left != NULL ) temp = temp -> left; else { temp -> left = (struct FileSearch*)malloc(sizeof(struct FileSearch); temp = temp -> left; break; } } else { if ( temp -> right != NULL ) temp = temp ->right; else { temp -> right = (struct FileSearch*)malloc(sizeof(struct FileSearch)); temp = temp -> right; break; } } } if ( temp == NULL ) temp = (struct FileSearch*)malloc(sizeof(struct FileSearch)); temp -> FilseSize = FileSize; strcpy(temp -> FilePath, FilePath); strcpy(temp -> FileName, FileName); temp -> left = temp -> right = NULL; } 파일검색(?) { for ( 파일 갯수 ) 파일삽입(, , , ); 파일검색(); }
그냥 이렇게 파일 하나씩 가져오면서 그때그때 2진 트리에 삽입하는 것으로 하면 될것 같습니다.;;
그러면 정렬도 될테고.. 디렉토리별로도 따로따로 정렬두 할 수 있을테구..
감사합니다. 알려주신만큼 열심히 노력해서 반드시 성과를 내도록 하겠습니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Re: 파일검색
재귀호출 하는 동안 각 파일의 이름과 사이즈를 자료구조에 담아야 합니다.
그래서 재귀호출이 끝난 다음에 이 자료구조를 알맞게 정렬하면 되겠죠
정렬에서 진도가 안나간다면 STL 을 쓰면 딱입니다.
답변 감사합니다.동적 구조체 배열에 담은 파일정보를 어떻게 정렬을 할
답변 감사합니다.
동적 구조체 배열에 담은 파일정보를 어떻게 정렬을 할까를 고민하고 있었습니다.
디렉토리는 특성상 깊이와 넓이를 알수가 없기 때문에 계속 찾아 들어가야해서 이부분이 많이 막힙니다.
혹시 이부분에 대해서 아이디어가 계시다면 가르침을 부탁 드립니다..
그리고 제가 C++은 잘 모르기 때문에 STL 도 또한 잘 모릅니다. STL을 사용할수 없어서 가르쳐 주셔도 알지 못하네요.. 죄송합니다.
황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을
검색에 왜 재귀호출이?
그런데 STL 을 써서 될 문제이고, 또한 동적구조체배열이라면 C 의 qsort 를 써도 되는 것 아닌가요?
[quote="바람돌이"]답변 감사합니다.동적 구조체 배열에 담은 파
애매한 게
디렉토리를 재귀적으로 검색하는 부분이 막히는 지
정렬에서 막히는 지 모호합니다.
한 번 더 명확하게 생각을 올리셨으면 합니다.
Re: 파일검색
질문이 잘 이해되지 않습니다. ^^;
(제가 이해력이 좀 떨어져서;;)
그러니깐... 질문하시는 요지는, 재귀호출로 하위 디렉토리에 있는 모든 파일까지 다 찾아놔서 저장을 해 두었는데...
단지 "정렬"을 하지 못하시겠다는 것입니까?
검색이 끝나고 나서 정렬을 하려 하다보니 또다시 재귀호출에 의한 정렬을 하고 있는중인데 진도가 거의 안나가네요.
이 부분의 말씀도 잘 이해가 되지 않습니다.
검색이 끝나고 정렬을 하려 하다보니, 정렬을 할 경우에도 재귀 호출에 의해서만 정렬이 가능했다. 라는 의미인가요?
아니면 검색이 끝나고 정렬을 할때, 그냥 재귀 호출을 사용한 정렬을 하려했는데 잘 안된다. 라는 의미인가요? :roll:
그러니깐... 질문하시는 요지는, 재귀호출로 하위 디렉토리에 있는 모든
그러니깐... 질문하시는 요지는, 재귀호출로 하위 디렉토리에 있는 모든 파일까지 다 찾아놔서 저장을 해 두었는데...
단지 "정렬"을 하지 못하시겠다는 것입니까?
네 맞습니다.
그리고 두번째 말씀하신것도 맞습니다. 1차 검색을 하고 나서 정렬이 되지 아니하여서 생기는 문제였습니다.
그래서 방법을 생각해 보니 재귀호출에 의한 방법밖에 생각이 나지않아서
진도가 안나가던 차였습니다.
그리고 제가 표현력이 없어서니 제가 죄송할 따름입니다.
방금 떠오른 생각인데
1차 검색할때 타겟이 되는 디렉토리의 모든 하부디렉토리만 검색해서 List 에 담은 다음 List 안에 있는 디렉토리 경로만 하나씩 꺼내다가 그안에 있는 파일들을 정렬하는건 어떨까 생각해 봅니다.
이렇게 되면 자료를 재구성할때 또 복잡해 지는군요.
황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을
차라리 소스를 올려주시는것이 빠르지 않을까요??제가 보기엔 굳이
차라리 소스를 올려주시는것이 빠르지 않을까요??
제가 보기엔 굳이 이렇게 하실 필요는 없을듯 싶습니다.
1차 검색할때 타겟이 되는 디렉토리의 모든 하부디렉토리만 검색해서 List 에 담은 다음 List 안에 있는 디렉토리 경로만 하나씩 꺼내다가 그안에 있는 파일들을 정렬하는건 어떨까 생각해 봅니다.
그냥 파일들 저장해서, 정렬해서 프린트.. 그럼 되는거 아닌가요? :roll:
[quote="바람돌이"]방금 떠오른 생각인데 1차 검색할때 타겟이
디렉토리 검색 시에 디렉토리 말고 파일만 모아서
List 에 담아 처리하는게 훨씬 빠릅니다.
왜 그런 생각을 하시는 지....
아마도 재귀호출 방법을 모르시는 것 같은데...
구조체 = { 속성; //자신이 디렉토리인지
구조체 = {
속성; //자신이 디렉토리인지 파일인지
경로; //경로
*자식들[0..n]
}
구조체 구조체배열;
이런식으로 구조체 배열을 구현하고 싶은데
제대로 안되네요.. 이러한 방법이 맞는것인지도 몰라서 고민중입니다.
루트 밑에 있는 디렉토리며 파일이며 트리형태로 연결되 있으면 돌면서 검색하는게 가능하지 않을까 라고 생각만 해 봅니다.
황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을
[quote="바람돌이"]구조체 = {
위에서
*자식들[0..n] 부분에서
검색이 끝나기 전까지는 n 값을 알 수가 없죠
그래서
*자식들[0..n] 이 부분은
보통 연결리스트로 구현합니다.
구조체 = {
속성; //자신이 디렉토리인지 파일인지
경로; //경로
*자식구조체 헤더 포인터
}
정도가 되는데 각 구조체는 링크로 연결되어 있어야 하므로
구조체 = {
속성; //자신이 디렉토리인지 파일인지
경로; //경로
*자식구조체 헤더 포인터
*자식구조체 다음 포인터
}
가 됩니다.
이것은 자료구조 중에 트리 구조인데
트리는 이렇게 연결리스트 를 두 번 사용하여 표현합니다.
[code:1]struct FileSearch{ char
그냥 이렇게 파일 하나씩 가져오면서 그때그때 2진 트리에 삽입하는 것으로 하면 될것 같습니다.;;
그러면 정렬도 될테고.. 디렉토리별로도 따로따로 정렬두 할 수 있을테구..
감사합니다.알려주신만큼 열심히 노력해서 반드시 성과를 내도록 하겠습니
감사합니다.
알려주신만큼 열심히 노력해서 반드시 성과를 내도록 하겠습니다.
황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을
댓글 달기