findnextfile

场景:FindFirstFile跟FindNextFile問題

FindFirstFile和FindNextFile問題
C/C++ code

int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE file;
    WIN32_FIND_DATA fileData;
    if ((file = FindFirstFile(L"E:\\*.*", &fileData)) == INVALID_HANDLE_VALUE)
    {
    //    printf("fails");
    } else {
        printf("filename:%s", fileData.cFileName);
        while(FindNextFile(file, &fileData))
        {
            printf("filename:%s \n", fileData.cFileName);
        }
    }
    FindClose(file);
    system("pause");
    return 0;
}


為甚麼上面的代碼只能輸出文件名的第一個字符?
怎解決?
我用的是VS2012

------解决方案--------------------
稍微改一下 _tmain -> main FindFirstFile(L"E:....)->FindFirstFile("E:...) 在vc控制台下能够得到结果啊:


------解决方案--------------------
C/C++ code
//================================================================= 
#include <stdio.h>    
#include <iostream.h> 
#include <windows.h> 

int main()
{
    HANDLE file;
    WIN32_FIND_DATA fileData;
    if ((file = FindFirstFile("E:\\*.*", &fileData)) == INVALID_HANDLE_VALUE)
    {
       printf("fails");
    }
    else 
    {
        printf("filename:%s\n", fileData.cFileName);
        while(FindNextFile(file, &fileData))
        {
            printf("filename:%s \n", fileData.cFileName);
        }
    }
    FindClose(file);
    system("pause");
    return 0;
}

------解决方案--------------------
刚才又搞了个Unicode版本

C/C++ code

int main()
{
    HANDLE file;
    WIN32_FIND_DATA fileData;
    if ((file = FindFirstFile(L"E:\\*.*", &fileData)) == INVALID_HANDLE_VALUE)
    {
        //    printf("fails");
    } 
    else 
    {
        setlocale(LC_ALL,"");
        printf("filename:%ls",fileData.cFileName);
        while(FindNextFile(file, &fileData))
        {
            printf("filename:%ls",fileData.cFileName);
        }
    }
    FindClose(file);
    system("pause");
    return 0;
}