3

我来自java,我无法弄清楚。我正在尝试使用系统函数连接字符串以运行带有参数的命令,这就是我正在做的事情,但它不起作用:

system("command "+param1+" other stuff "+param3);
4

3 回答 3

6

要在 C 中连接字符串,请使用snprintf

在 C 中,字符串表示为一个字符数组。他们的名字是指向他们的第一个元素的指针。每个操作都应该使用函数来完成。在其他情况下,您只需进行指针算术。因此,在您的示例中,您尝试从系统中可能不存在的地址启动功能。

不要使用strcat如果您确实需要简单的函数来调用使用,这很危险strlcat

有关更多信息,您需要回到基础

于 2013-06-30T14:31:31.840 回答
3

可能您想使用以下函数构建命令字符串snprintf:您可以在字符串中插入各种类型(不仅是字符串),并且可以防止缓冲区溢出(检查其返回值!)。

char buffer[256];
if(snprintf(buffer, sizeof(buffer), "command %s other stuff %s", param1, param3)>=sizeof(buffer))
{
   /* the buffer isn't big enough */
}
else
    system(buffer);
于 2013-06-30T14:34:20.387 回答
0

中没有运算符重载c。您必须创建足够的缓冲区,然后使用库函数strcat

于 2013-06-30T14:32:33.913 回答