系统() 中的空格C++

Spaces in system() C++

本文关键字:空格 C++ 系统      更新时间:2023-10-16

我已经尝试了在Stackoverflow中找到的一些解决方案,但是我无法使其工作,我想启动一个.LOG(.txt文件)来自C++,但包含它的路径文件夹可能有空格,所以当我尝试启动它时,我收到一个错误,说它找不到该文件,因为 pah(包含空格)是错误的,这是我的代码的样子:

void Log (unsigned int Code,...)
{
char currdate[11] = {0};
SYSTEMTIME t;
GetLocalTime(&t);
sprintf(currdate, "%02d:%02d:%02d", t.wHour, t.wMinute, t.wSecond);
PROCESSENTRY32 pe32;
FILE* FileHwnd1;
FileHwnd1 = fopen("TEST.log","a+");
fprintf(FileHwnd1,"[%s] Code: %Xn",currdate,Code);
fclose(FileHwnd1);
char buffer[MAX_PATH];
GetModuleFileName( NULL, buffer, MAX_PATH);
char Path[50];
wsprintf(Path,"start %s\AntiHack.log",buffer);
system(Path);//Here is where i get the containing spaces path error
}

谢谢。

我建议您完全避免系统调用并自行启动该过程。

  1. 使用 AssocQueryString() 查找您的关联进程扩展(在本例中为 .log)
  2. 设置并启动 CreateProcess() 调用以调用,传递适当的命令行。

还有其他方法可以做到这一点,但正如你现在注意到的那样,走一条迂回的路总是会有陷阱。以上是 Explorer.exe 如何启动扩展的关联进程。

你可以试试:

wsprintf(Path,"start "" "%s"\AntiHack.log",buffer);