Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取路径并附加文件名_C++_Windows_Winapi - Fatal编程技术网

C++ 获取路径并附加文件名

C++ 获取路径并附加文件名,c++,windows,winapi,C++,Windows,Winapi,我试图获取一个路径(appdata)并附加一个文件名(smss.dll),然后将这两个文件组合成C:\users\username\appdata\roaming\smss.dll 我已经有了: static char appdata[MAX_PATH+1]; SHGetSpecialFolderPathA(HWND_DESKTOP, appdata, CSIDL_APPDATA, FALSE); LPCSTR target = "smss.dll"; 如何将这些组合成一个变量 static

我试图获取一个路径(appdata)并附加一个文件名(smss.dll),然后将这两个文件组合成
C:\users\username\appdata\roaming\smss.dll
我已经有了:

static char appdata[MAX_PATH+1];
SHGetSpecialFolderPathA(HWND_DESKTOP, appdata, CSIDL_APPDATA, FALSE);

LPCSTR target = "smss.dll";
如何将这些组合成一个变量

static char appdata[MAX_PATH+1];
SHGetSpecialFolderPathA(HWND_DESKTOP, appdata, CSIDL_APPDATA, FALSE);

strcat(appdata, "\\smss.dll");

该函数将右侧字符串追加到左侧缓冲区。它假定目标有空间进行连接。如果没有足够的空间,这是未定义的行为。因此,最好检查是否有足够的空间。

您可以使用(限制为
MAX\u PATH
字符),或者从Windows 8开始。

这是C代码。你读过strcat吗?你真的应该使用W版本,而不是A版本。现在是2017年。将文件名附加到路径中有额外的语义,建议的副本会忽略这些语义。投票重新打开,即使它需要作为另一个问答的副本关闭。
strcat
是不安全的,不应该在现代代码中使用。@JonathanPotter这就是为什么我建议首先检查目的地是否有空间使用许多安全的方法之一,你不需要检查。是的,你提出了这个建议,但是,您提供的代码是完全不安全和不完整的。