PathCanonicalizeA 函数 (shlwapi.h)

您所在的位置:网站首页 windows文件路径规范化处理函数怎么写 PathCanonicalizeA 函数 (shlwapi.h)

PathCanonicalizeA 函数 (shlwapi.h)

2023-11-11 19:44| 来源: 网络整理| 查看: 265

PathCanonicalizeA 函数 (shlwapi.h) 项目 08/26/2023

通过删除导航元素(如“.”和“..”)来简化路径,以生成格式正确的直接路径。

注意 滥用此函数可能会导致缓冲区溢出。 建议使用更安全的 PathCchCanonicalize 或 PathCchCanonicalizeEx 函数。  语法 BOOL PathCanonicalizeA( [out] LPSTR pszBuf, [in] LPCSTR pszPath ); 参数

[out] pszBuf

类型: LPTSTR

指向接收规范化路径的字符串的指针。 必须将此缓冲区的大小设置为MAX_PATH,以确保其大小足以容纳返回的字符串。

[in] pszPath

类型: LPCTSTR

指向包含要规范化的路径的最大长度MAX_PATH以 null 结尾的字符串的指针。

返回值

类型: BOOL

如果已计算结果并且 lpszDst 输出缓冲区的内容有效,则返回 TRUE。 否则返回 FALSE , lpszDst 指向的缓冲区内容无效。 要获得更多的错误信息,请调用 GetLastError。

注解

此函数允许用户通过将特殊字符序列插入路径来指定要从路径中删除的内容。 “..”序列指示删除当前位置到上一个路径段的路径段。 “.”序列指示跳过下一个路径段到以下路径段。 无法删除路径的根段。

如果“..”序列多于路径段,则函数返回 TRUE , 并且 lpszDst 指向的缓冲区的内容仅包含根“”。

示例 #include #include #include "Shlwapi.h" using namespace std; int main( void ) { // Path_1 destination buffer. char buffer_1[MAX_PATH] = "JustABufferToHoldTheCanonicalizedPathForAnExample"; char *lpStr1; lpStr1 = buffer_1; // Path_2 to be Canonicalized. char buffer_2[ ] = "A:\\name_1\\.\\name_2\\..\\name_3"; char *lpStr2; lpStr2 = buffer_2; // Path_3 to be Canonicalized. char buffer_3[ ] = "A:\\name_1\\..\\name_2\\.\\name_3"; char *lpStr3; lpStr3 = buffer_3; // Path_4 to be Canonicalized. char buffer_4[ ] = "A:\\name_1\\name_2\\.\\name_3\\..\\name_4"; char *lpStr4; lpStr4 = buffer_4; // Path_5 to be Canonicalized. char buffer_5[ ] = "A:\\name_1\\.\\name_2\\.\\name_3\\..\\name_4\\.."; char *lpStr5; lpStr5 = buffer_5; // Path_6 to be Canonicalized. char buffer_6[ ] = "C:\\.."; char *lpStr6; lpStr6 = buffer_6; cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3