【发布时间】:2017-04-02 10:59:46
【问题描述】:
我正在尝试从 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);
【问题讨论】:
-
不要使用
memcpy()之类的东西构建文件路径字符串。改用更像PathCombine()的东西。并且GetCurrentDirectory()不保证会报告EXE所在的文件夹。请改用GetModuleFileName()并从中删除文件名,例如使用PathRemoveFileSpec()。