gpt4 book ai didi

c++ - CreateFile 返回无效句柄值

转载 作者:行者123 更新时间:2023-11-28 05:13:03 45 4
gpt4 key购买 nike

我正在尝试从 exe 文件所在的目录中读取文件。 data.txt 文件位于 VS Project 目录中,当我指定完整路径时,一切正常。

char curDirectory[MAX_PATH];
GetCurrentDirectory(MAX_PATH, curDirectory);

char filePath[MAX_PATH];

char *name = "\\data.txt";

memcpy(filePath, curDirectory, sizeof(curDirectory));
memcpy(filePath + strlen(curDirectory), name, strlen(name));

HANDLE hFile = CreateFile(filePath, GENERIC_ALL, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

最佳答案

您不会以 null 终止字符串。为此,请在第二次调用 memcpy 时传递 strlen(name) + 1

一些其他观察:

  • CreateFile 失败时,您应该调用GetLastError 获取错误代码。
  • 在处理字符串时使用strcpystrcat 而不是memcpy
  • 就是说,您的代码要求溢出缓冲区。如果这确实是 C++,请使用 std::string 并让该类管理缓冲区。
  • 没有真正的理由相信可执行文件位于当前工作目录中。

关于c++ - CreateFile 返回无效句柄值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43167509/

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