C编程新手。
以下代码段尝试从文本文件(utf-8)中读取制表符分隔的MD5(32个字符)列表和相应的描述(最多128个字符),但导致应用程序崩溃:
HANDLE hFile = CreateFileW(good_path, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
LPWSTR md5 = malloc(sizeof(wchar_t) * 32);
LPWSTR desc = malloc(sizeof(wchar_t) * 128);
int i;
while((i = fwscanf(hFile, L"%ls %ls", md5, desc)) != EOF)
{
if (i == 2) // OK
{
}
else // Something went wrong
{
}
}
CloseHandle(hFile);
return TRUE;
几个问题:
更新1
我已将这段代码放入一个独立的exe(而不是DLL)中。仍然崩溃。
更新2
根据Chris的评论更新为fwscanf。仍然崩溃。如果我注释掉该while...fwscanf...
行,则可以正确退出。
CreateFileW()
返回Windows句柄,有点像文件号,但有所不同。fwscanf()
期望FILE*
不是Windows句柄;得到一个FILE*
开放的文件,fopen()
或_wfopen()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句