Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+;上带有常量字符(结果GetComputerName)的串联字符串+;_C++_Concat_Strcpy_Strcat - Fatal编程技术网

C++ C+;上带有常量字符(结果GetComputerName)的串联字符串+;

C++ C+;上带有常量字符(结果GetComputerName)的串联字符串+;,c++,concat,strcpy,strcat,C++,Concat,Strcpy,Strcat,Need:将函数GetComputerName(nameBuf)的结果与打开Chormium的命令连接起来 目标:使用正在执行安装的机器的名称创建新的配置文件 问题:我不知道如何实现这种连接,我尝试用strcpy和strcat来实现,但没有成功 这里是我的代码: int WINAPI WinMain(HINSTANCE inst,HINSTANCE prev,LPSTR cmd,int show) { //Close phpdesktop.exe WinExec("taskki

Need:将函数GetComputerName(nameBuf)的结果与打开Chormium的命令连接起来

目标:使用正在执行安装的机器的名称创建新的配置文件

问题:我不知道如何实现这种连接,我尝试用
strcpy
strcat
来实现,但没有成功

这里是我的代码:

int WINAPI WinMain(HINSTANCE inst,HINSTANCE prev,LPSTR cmd,int show)
{

    //Close phpdesktop.exe
    WinExec("taskkill /F /IM phpdesktop.exe", SW_HIDE);
    //Sleep
    Sleep(500);
    //Open phpdesktop.exe mini server 
    WinExec("phpdesktop.exe -S 127.0.0.1:54007 -t www -c php.ini", SW_HIDE);
    //Sleep    
    Sleep(500);

    //Get computer name
    TCHAR nameBuf[MAX_COMPUTERNAME_LENGTH + 2];
    DWORD nameBufSize;

    nameBufSize = sizeof nameBuf - 1;
    if (GetComputerName(nameBuf, &nameBufSize) == TRUE) 
    {
       //How to make the concatenation result nameBuf GetComputerName function with the command of Chromium.                  
       WinExec(strcpy("chromium\\ChromiumPortable -app=http://127.0.0.1:54007/ --profile-directory=", nameBuf), SW_HIDE);
    }

    //Return 
    return 0;
}
--


Pastbin:

strcpy
转换为
const char*
调用未定义的行为:

试试看:

TCHAR command[1024];
strcpy(command, "chromium\\ChromiumPortable -app=http://127.0.0.1:54007/ --profile-directory=");
strcat(command,nameBuf);
WinExec(command, SW_HIDE);

如果你不想使用第二个缓冲区,你可以试试这个

THAR nameBuf[254 + 2]={0};
DWORD nameBufSize;
strcpy(nameBuf,"chromium\\ChromiumPortable -app=http://127.0.0.1:54007/ --profile-directory=");
nameBufSize = sizeof nameBuf - 1;
int index = strlen(nameBuf);
if (GetComputerName(&nameBuf[index], &nameBufSize) == TRUE) 
{
   WinExec(nameBuf, SW_HIDE);
}

第二个
strcpy
应该是
strcat
,不是吗?第一个必须是
strcpy
,因为
命令
尚未初始化。示例是正确的,第一个是
strcpy
不是
strcat
:-)使用此解决方案,我无法应用。。。但我相信这是我的错。我感谢你的帮助,朋友!
THAR nameBuf[254 + 2]={0};
DWORD nameBufSize;
strcpy(nameBuf,"chromium\\ChromiumPortable -app=http://127.0.0.1:54007/ --profile-directory=");
nameBufSize = sizeof nameBuf - 1;
int index = strlen(nameBuf);
if (GetComputerName(&nameBuf[index], &nameBufSize) == TRUE) 
{
   WinExec(nameBuf, SW_HIDE);
}