文字列の配列(あるディレクトリにあるすべてのファイルとフォルダー)を返す関数を作成しようとしました。コードは以下です。このコードをコンソールへの出力情報に使用すると(以下のコメント付きコードを使用)、うまく機能しますが、ポインターをポインターに戻そうとするとwchar_t
、すべての要素が互いに等しい(すべての要素が同じ)配列を取得します。私は何を間違っていますか?
wchar_t path[SIZE];
wchar_t *PathCreator(wchar_t *dir, wchar_t *fileName)
{
int j = 0;
while(j < SIZE)
{
path[j] = '\0';
j++;
}
int i;
i = 0;
while(*dir != '*' && *dir != '\0')
{
path[i] = *dir;
i++;
dir++;
}
wchar_t *t = fileName;
while(*t != '\0')
{
path[i] = *t;
i++;
t++;
}
path[i] = '\0';
return path;
}
wchar_t* allFlsArr[SIZE];
int i = 0;
wchar_t **GetAllFiles(wchar_t* dir)
{
WIN32_FIND_DATA file;
HANDLE search_hendle = FindFirstFile(dir, &file);
if(search_hendle)
{
do
{
wchar_t *p = PathCreator(dir,file.cFileName);
//std::wcout << p << std::endl;
allFlsArr[i++] = p;
std::wcout << i << std::endl;
}
while(FindNextFile(search_hendle, &file));
allFlsArr[i] = '\0';
}
CloseHandle(search_hendle);
return allFlsArr;
}