포인터 관련..
딥자두
질문 제목 :포인터 관련..질문 내용 :
폴더의 파일 리스트를 얻어오는것을 해보고 있는데요.
코드는 아래와 같습니다.
빨간색으로 된 부분에서 list에 이상한 값이 나오더군요.
그런데 getfilelist()에서의 printf()문으로 찍은 데이터들은 정상적으로 나옵니다.
고수님들의 조언을 부탁드립니다.
typedef struct {
char* filepath;
char* filename;
char* fileextension;
int filetotcnt;
}file_info;
int getfilelist(char* dir, file_info** file) {
int i, ret = 0;
int numofitem, strsize;
file_info* filebuffer;
struct dirent** psdiritem;
numofitem = scandir(dir, &psdiritem, null, alphasort);
if(numofitem = 2) {
ret = error_nofile;
printf(no file in the folder\n);
}
filebuffer = (file_info*)calloc(sizeof(file_info), numofitem);
for(i = 0 ; i numofitem ; i++) {
//file total count in the folder
filebuffer[i].filetotcnt = numofitem;
//file path
filebuffer[i].filepath = (char*)calloc(sizeof(char), strlen(dir) + 1);//size + 0, -1 error, +1 ok ???
strcpy(filebuffer[i].filepath, dir);
//file name
strsize = strlen(psdiritem[i]-d_name) + 1;//size + 0, -1 error, +1 ok ???
filebuffer[i].filename = (char*)calloc(sizeof(char), strsize);
strcpy(filebuffer[i].filename, psdiritem[i]-d_name);
printf(file path name total cnt in the folder = [%s][%s][%d]\n, filebuffer[i].filepath, filebuffer[i].filename, filebuffer[i].filetotcnt);
}
*file = (file_info*)calloc(sizeof(file_info), numofitem);
for(i = 0 ; i numofitem ; i++) {
memcpy(&((*file)[i]), &(filebuffer[i]), sizeof(file_info));
printf(file path name total cnt in the folder = [%s][%s][%d]\n, (*file)[i].filepath, (*file)[i].filename, (*file)[i].filetotcnt);
}
for(i = 0 ; i numofitem ; i++) {
free(filebuffer[i].filepath);
free(filebuffer[i].filename);
}
free(filebuffer);
printf(get file list seccess!...\n);
return ret;
}
file_info* file_data;
void main() {
getfilelist(/nand/, &file_data);
printf(file path name total cnt in the folder = [%s][%s][%d]\n, file_data[i].filepath, file_data[i].filename, file_data[i].filetotcnt);
}