system()C ++中的空格

时间:2012-09-19 03:47:05

标签: c++ cmd system spaces

我已尝试使用Stackoverflow中的一些解决方案,但我无法使其工作,我想从C ++启动.LOG(.txt文件),但包含它的路径文件夹可能有空格,所以当我尝试启动它时,我得到一个错误,说它无法找到该文件,因为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: %X\n",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
}

感谢。

2 个答案:

答案 0 :(得分:2)

我建议你完全避免系统调用,然后自己启动进程。

  1. 使用AssocQueryString()查找您的相关流程 扩展名(在本例中为.log)
  2. 设置并启动CreateProcess()调用以调用,传递 适当的命令行。
  3. 还有其他方法可以做到这一点,但正如你现在所注意到的那样,走一条路往往会有陷阱。上面介绍了Explorer.exe如何启动扩展的关联过程。

答案 1 :(得分:0)

您可以尝试:

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