如何在C++中实现正确的文件夹列表

Ax.*_*Ax. 4 c winapi

包括"stdafx.h"

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

void _tmain(int argc, TCHAR *argv[])
{
   WIN32_FIND_DATA FindFileData;
   HANDLE hFind;
   printf ("Target file is %s.\n", argv[1]);

   hFind = FindFirstFile(argv[1], &FindFileData); 
   if (hFind == INVALID_HANDLE_VALUE) 
   {
      printf ("FindFirstFile failed (%d)\n", GetLastError());
       system("pause");
      return;
   } 
   else 
   {
   do
          {
          printf("%s\n",FindFileData.cFileName);            
          }
   while (FindNextFile(hFind,&FindFileData)!=0);
   FindClose(hFind);
   }
   system("pause");
   FindClose(hFind);
}
Run Code Online (Sandbox Code Playgroud)

我需要在输出中获取文件夹列表,但它给了我以下内容:

.
.
f
f
f
Run Code Online (Sandbox Code Playgroud)

实际上,我的文件夹列表是:

.
..
file1
file2
file3
Run Code Online (Sandbox Code Playgroud)

为什么我只有第一个文件名?谢谢.

Con*_*tin 7

使用_tprintf(TEXT("%s\n"), FindFileData.cFileName).

在你的情况下FindFileData.cFileName是实际类型wchar_t,所以与printf你打印宽字符串,就像它是ascii.