폴더의 파일 리스트를 얻어오는것을 해보고 있는데요.

코드는 아래와 같습니다.

빨간색으로 된 부분에서 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() {

             int i;

             GetFileList("/nand/", &File_data);

 

             for(i = 0 ; i < File_data[0].FileTotCnt ;  i++) {

                  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);

              }

}