如何将字符串中的\字符更改为/字符?

时间:2017-10-02 22:17:19

标签: c string build special-characters

我正在使用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有“\”的问题,因为它是一个特殊字符。我试过“”\“”和“//”,但似乎没什么用。

2 个答案:

答案 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路径中遇到类似问题。