我正在使用GetFullPathName和WinExec。
要让WinExec正确调用我的外部程序,我需要有一个完整的程序路径。
GetFullPathName()返回以下内容......
C:\job\curr01\help\hlp.exe
当我在WinExec中使用此路径时,没有任何反应。这是因为WinExec期待......
C:/job/curr01/help/hlp.exe
我知道这一点,因为如果我将字符串“C:/job/curr01/help/hlp.exe”硬编码到WinExec()中,它就可以正常工作并打开程序。
我的问题是我如何扫描我的字符串'\'并用'/'替换它们?
'\'我是一个特殊角色,以下不起作用......
以下helpPath ='C:\ job \ curr01 \ help \ hlp.exe'
for (char* p = helpPath; p = strchr(p, "\"); ++p) {
*p = "/";
}
C有“\”的问题,因为它是一个特殊字符。我试过“”\“”和“//”,但似乎没什么用。
答案 0 :(得分:3)
试试这个:
if (*p == '\\') //Escape the character '\'
*p = '/';
答案 1 :(得分:0)
我不认为WinExec
真的期望" /"作为目录分隔符。我相信"首选" Win32 API调用中的分隔符仍然是" \"。支持" /"一段时间后,它被添加到一些Win32 API函数中,或者为熟悉的人,以及除Windows之外的任何东西使生活更轻松,或者避免因使用" \"而导致的问题。在C字符串文字中。或者也许是出于其他原因只有微软理解。
无论如何,你应该修复" \"的逃避效果,可能只是加倍:c:\\path\\to\\my\\exe
。与使用正斜杠相比,这是解决问题的更多Windows方法,(IIRC)在某些地方可以使用,但在其他地方则不行。
我感谢这不是一个真正的新答案,但我注意到您已经问过其他问题,您似乎在Windows路径中遇到类似问题。