gpt4 book ai didi

c - 为什么使用 fscanf 会导致应用程序崩溃?

转载 作者:可可西里 更新时间:2023-11-01 11:24:48 26 4
gpt4 key购买 nike

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. 我对 malloc(...) 的使用是否正确?
  2. 可能导致崩溃的原因是什么?

更新 1

我已将此代码制作成独立的 exe(而不是 DLL)。仍然崩溃。

更新 2

根据 Chris 的评论更新到 fwscanf。仍然崩溃。如果我注释掉 while...fwscanf... 行,它会正确退出。

最佳答案

CreateFileW() 返回一个 Windows 句柄,它有点像文件号,但有些不同。 fwscanf() 需要一个 FILE* 而不是 Windows 句柄;获取 FILE* 使用 fopen()_wfopen() 打开您的文件。

关于c - 为什么使用 fscanf 会导致应用程序崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41663570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com