파일정보를 출력하는 소스를 이해 못하겠습니다.
후유
질문 제목 : 지식in에서 파일정보 출력 소스를 얻었습니다.얻었지만 단순히 쓸수 있을 뿐이지 무슨 구조인지 전혀 모르겠습니다.
저도 나름대로 해보려고 했지만
처음부터 모르는게 너무 많습니다... 노력해도 함수 분석에서 막힙니다...질문 내용 :
#includestdio.h
#includeio.h
#includemalloc.h
#includestring.h
extern interrno;
#definehsmalloc malloc
#definehsfree free
#defineerrormsg(a) printf(%s errno[%d], error message [%s]\r\n, #a, errno, strerror(errno)?strerror(errno):[no message])
typedef struct_filenode {struct_finddata_t fileinfo;struct_filenode *next;struct_filenode *prev;}filenode, *filenode;
voidfilenodefree(filenode head);filenode hsgetfileinfo(char*path);
intmain(){filenode filedata, tmp;filedata = hsgetfileinfo(*.txt); for(tmp = filedata ; tmp ; tmp = tmp-next) {printf(txt파일 : %s\n, tmp-fileinfo.name);}filenodefree(filedata);
return0;}
voidfilenodefree(filenode head){filenode pp;for(pp = head; pp ; pp = head) {head = head-next;hsfree(pp);}
return;}
filenode hsgetfileinfo(char*path){longhandle;filenode head = null, cur, prv = null;struct_finddata_t fileinfo;
if((handle = _findfirst(path, &fileinfo)) == -1) {errormsg(_findfirst);return(null);}
do{if((cur = (filenode)hsmalloc(sizeof(filenode))) == null) {errormsg(hsmalloc);filenodefree(head);return(null);}
memset(cur, 0x00,sizeof(filenode));memcpy(&cur-fileinfo, &fileinfo,sizeof(fileinfo));
if(head == null) head = cur;else{cur-prev = prv;prv-next = cur;}prv = cur;}while(_findnext(handle, &fileinfo) == 0);
_findclose(handle);return(head);}
모르는 부분은 너무 많습니다...전체를 다 알려달라고는 하지 않겠습니다.다만 조금이라도 도와주시면 기쁠것 같습니다.
extern interrno 이부분과구조체 선언 부분에서 왜 멤버가 struct 로 이어지는건지... (구조체 관련 부분은 전혀 모르겠습니다...)memset(cur, 0x00,sizeof(filenode));memcpy(&cur-fileinfo, &fileinfo,sizeof(fileinfo));이 두개도 뭔지 모르겠습니다 *_*;;;그리고 마지막으로제가 원래 printf 에 파일이름,정보(??),크기를 출력하는 서식에서임시로 지워본것이지만함수나 다른곳 어디에서 크기,정보를 처리하는지 몰라서헛돌고 있는 문제만 해결되도 좋을것같습니다...ㅠㅜ
정말 부탁드립니다.
..c언어 q&a가 맞는것이겠죠?
-
헛매질
감사합니다!
링크드리스트...;ㅁ; 알겠습니다... -
가시
소스를 다 보지는 못했지만.. 간단한 부분만 아는데로 알려드릴께요
extern int errno // 전역변수이네요...
struct // 링크드리스트 참고해서 보시면 알게되실거에요. 짧은 글로 하기에는..;; 검색하시면 많이 나와요.
memset, memcpy는 문자열 함수입니다.
memset은 FileNode(구조체) 사이즈만큼 cur을 0으로 초기화 하는 부분이구요.
memcpy는 fileinfo 사이즈만큼 fileinfo를 cur구조체 안의 fi