我使用 Win32 API FindNextFile编写 ac 程序来查找文件
#include<stdio.h>
#include<tchar.h>
#include<windows.h>
int _tmain(int argc, TCHAR *argv[])
{
HANDLE hNextFile;
WIN32_FIND_DATA findFileData;
LPCTSTR fileName = argv[1]; //input argument "C:\test\file*.txt"
hNextFile = FindFirstFile(fileName, &findFileData);
while(hNextFile != INVALID_HANDLE_VALUE)
{
printf("long name: %s\t8dot3 name: %s\n", findFileData.cFileName, findFileData.cAlternateFileName);
hNextFile = FindNextFile(fileName, &findFileData); //Unhandled exception here!
}
printf("%s", GetLastError());
return 0;
}
当第一次调用 FindNextFile 时,它会抛出异常。异常信息:
findfile.exe 中 0x77178dc9 处的未处理异常:0xC0000005:访问冲突写入位置 0x005c0080。
你能给我一些建议吗?
提前致谢。
我已经像这样修改了我的代码,它工作正常。感谢皮埃尔的解释。
#include<stdio.h>
#include<tchar.h>
#include<windows.h>
int _tmain(int argc, TCHAR *argv[])
{
HANDLE hNextFind;
WIN32_FIND_DATA findFileData;
LPCTSTR fileName = argv[1];
BOOL result = TRUE;
if((hNextFind = FindFirstFile(fileName, &findFileData)) == INVALID_HANDLE_VALUE)
return 1;
while(result)
{
_tprintf(TEXT("long name: %s\t8dot3 name: %s\n"), findFileData.cFileName, findFileData.cAlternateFileName);
result = FindNextFile(hNextFind, &findFileData);
}
FindClose(hNextFind);
return 0;
}