“int system(const char *)”的预期1个参数;有2个而不是

时间:2009-09-21 09:50:45

标签: c++ echo

void TATTDataset::AckErrHandler(const NDataString& ErrMsg)
{
    system("echo ErrMsg: %s >> err", (const char *)ErrMsg);
    ...... code .......
}

此错误消息是什么意思?我该如何解决? ErrMsg.toCString()也没有帮助。有什么建议吗?

编辑:

我按照建议编辑了代码 -

String s;    
Char *tmpStr = ErrMsg.ToCString();
s.Format("echo ErrMsg: %s >> err",tmpStr);    
system(s);

我仍然得到:  无法使用'const char *'初始化'char *'。  Char * tmpStr = ErrMsg.ToCString();

4 个答案:

答案 0 :(得分:1)

system()调用实际上只有一个参数。你要做的是让system()表现得像printf(),这显然不是它的设计方式。

您无法尝试使用可以进行一些解析或创建临时缓冲区的字符串类并使用sprintf()

答案 1 :(得分:1)

如前所述,system()只接受一个参数(字符串)。

如果ErrMsg.toCString()返回MFC CString,那么你可以试试这个:

void TATTDataset::AckErrHandler(const NDataString& ErrMsg)
{
    CString s;
    s.Format("echo ErrMsg: %s >> err", ErrMsg.toCString());
    system(s);
    ...... code .......
}

答案 2 :(得分:0)

系统函数只有一个参数,但你传入了两个。

1st argument: "echo ErrMsg: %s >> err"
2nd argument: (const char *)ErrMsg

通过只传递一个参数或重新加工system()来接受两个参数来解决它。

答案 3 :(得分:0)

您正在向系统传递2个参数,它需要一个

2是     “echo ErrMsg:%s>> err”

(const char *)ErrMsg

我怀疑你的意思是如此结合它们,例如使用snprintf

虽然如果这是实际代码,我会将错误消息直接输出到文件而不是使用系统,例如fprintf中