DIR구조체의 사용법..?

sadrove의 이미지

아래와 같이 하면요..

			for(pFile = readdir(dp); pFile; pFile = readdir(dp)){
				printf("%s\n", pFile->d_name);

만일 디렉토리에 aaa파일과 bbb파일이 있을때...
출력이..

Quote:

.
..
aaa
bbb

이라고 나옵니다...
전 이중에서 aaa값만 얻고 싶은데요..
pFile->d_name+1 이라고 하면..
출력이
Quote:

.
aa
bb


라고 나옵니다...즉 각각 앞자리씩 짤리더군요...
dirent 구조체를 보니까
char d_name[NAME_MAX+1]; 이라고 되어 있던데....
어떻게 1차원 배열에 저 값들이 들어가있는데..출력은 저렇게 되는지 이해가 안갑니다...2차원 배열이어야하지 않나요..?...
어렵네요..^^
김충길의 이미지

sadrove wrote:
아래와 같이 하면요..
			for(pFile = readdir(dp); pFile; pFile = readdir(dp)){
				printf("%s\n", pFile->d_name);

만일 디렉토리에 aaa파일과 bbb파일이 있을때...
출력이..

Quote:

.
..
aaa
bbb

이라고 나옵니다...
전 이중에서 aaa값만 얻고 싶은데요..
pFile->d_name+1 이라고 하면..
출력이
Quote:

.
aa
bb


라고 나옵니다...즉 각각 앞자리씩 짤리더군요...
dirent 구조체를 보니까
char d_name[NAME_MAX+1]; 이라고 되어 있던데....
어떻게 1차원 배열에 저 값들이 들어가있는데..출력은 저렇게 되는지 이해가 안갑니다...2차원 배열이어야하지 않나요..?...
어렵네요..^^

char d_name[NAME_MAX+1];

이면 저렇게 나오는건 당연하죠.
readdir ()함수를 호출하면 DIR 변수가 업데이트 됩니다.

aaa 라는 파일이 있으면 처음호출에서 그 파일명이 d_name에 있겠죠.
배열의 처음부터 들어가니 d_name + 1 로 출력하면 두번째 부터 출력하니
aa 만 나오죠.

답을 하고 보니.. 질문의 의도가 이게 아닌거 같다는 느낌이 드는건 왜일까요?
왜 2차원 배열의 얘기가 나왔죠?

위에 for 문 호출에서 readdir() 함수가 2번 호출된건 아시죠?
한번의 호출로 하나의 디렉토리 엔트리 정보를 얻어 옵니다.
엔트리가 없을때 까지 readdir() 을 호출하는 거죠.

screen + vim + ctags 좋아요~

sadrove의 이미지

for문을 왜 신경 안 썼으까..^^;;

감사합니다...

좋은 밤 되세요..