gpt4 book ai didi

c - 访问冲突 strcpy

转载 作者:行者123 更新时间:2023-11-30 18:44:53 28 4
gpt4 key购买 nike

每当我打电话 strcpy制作"SendEmail.exe " + log[1024]进入LCSTR我收到运行时违规异常。

我尝试调试,结果成功了:

strcpy(CmdParams, ""+log[1024]);

char log[1024];
...
if (strlen(log) > 49)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;

memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
memset(&pi, 0, sizeof(pi));
LPSTR CmdParams;
strcpy(CmdParams, ""+log[1024]);
CreateProcessA(NULL, CmdParams, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
}

应该发生的是 strcpy应该将这些值复制到 CmdParams并且下一行应该已经被执行。

最佳答案

CmdParams 是一个指针。您没有为其指向分配任何内存,甚至根本没有初始化它。这就是为什么您在 strcpy() 上遇到访问冲突的原因。

尝试更多类似这样的事情:

char log[1024];
...
int len = strlen(log);
if (len > 49)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;

memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
memset(&pi, 0, sizeof(pi));

LPSTR CmdParams = (LPSTR) malloc(14 + len + 1);
if (CmdParams)
{
strcpy(CmdParams, "SendEmail.exe ");
strcat(CmdParams, log);
/* or:
strcpy(CmdParams, "SendEmail.exe ");
strcpy(CmdParams+14, log);
*/
/* or:
sprintf(CmdParams, "SendEmail.exe %s", log);
*/
CreateProcessA(NULL, CmdParams, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
free(CmdParams);
}
}

关于c - 访问冲突 strcpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56517630/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com