c로 파일인지 폴더 구별할수있게하려면..
글쓴이: pooh311 / 작성시간: 월, 2005/06/27 - 8:43오후
while ((pent=readdir(pdir)) != '\0'){
stat(pent->d_name, &st);
if (S_ISDIR(st.st_mode)) {
pent->d_name[strlen(pent->d_name)+1]='\0';
pent->d_name[strlen(pent->d_name)]='/';
}
printf("%s\n", pent->d_name);
}
이렇게 하면 파일은 그대로 출력되고 폴더는 폴더명 뒤에 '/' 붙어서 나오지 않나요??
근데 어떤 파일에는 뒤에 '/'붙어서 나오네요..
제가 실수한게 있나요??
Forums:


struct dirent::d_name은 사용자가 임의로 수정할 수 있는
struct dirent::d_name은 사용자가 임의로 수정할 수 있는 member가 아닙니다. 따라서 추가로 "/"를 넣을 수 없습니다. 또한 readdir(3)이 리턴하는 것은 NULL이지 '\0'이 아닙니다. 단순히 디렉토리 이름 뒤에 "/"를 붙여서 출력하는 것이 목적이라면 다음과 같이 하면 됩니다:
while ((pent=readdir(pdir)) != NULL) { stat(pent->d_name, &st); printf("%s%s\n", pent->d_name, S_ISDIR(st.st_mode) ? "/" : ""); }C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기