Ожидаемый 1 аргумент (ы) для "int system (const char *)"; было 2 вместо - PullRequest
0 голосов
/ 21 сентября 2009
void TATTDataset::AckErrHandler(const NDataString& ErrMsg)
{
    system("echo ErrMsg: %s >> err", (const char *)ErrMsg);
    ...... code .......
}

Что означает это сообщение об ошибке? Как мне решить это? ErrMsg.toCString () тоже не помогает. Любое предложение?

EDIT:

Я отредактировал код в соответствии с предложением -

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

Тем не менее я получаю: Невозможно инициализировать 'char *' с помощью 'const char *'. Char * tmpStr = ErrMsg.ToCString ();

Ответы [ 4 ]

1 голос
/ 21 сентября 2009

Как уже упоминалось, system () принимает только один аргумент (строку).

Если ErrMsg.toCString () возвращает MFC CString, вы можете попробовать это:

void TATTDataset::AckErrHandler(const NDataString& ErrMsg)
{
    CString s;
    s.Format("echo ErrMsg: %s >> err", ErrMsg.toCString());
    system(s);
    ...... code .......
}
1 голос
/ 21 сентября 2009

Системный вызов () имеет только один аргумент. То, что вы пытаетесь сделать, это позволить system() вести себя как printf(), что явно не так, как было задумано.

Вы не можете попытаться использовать строковый класс, который может выполнить некоторый анализ или создать временный буфер, и использовать sprintf ()

0 голосов
/ 21 сентября 2009

Вы передаете 2 аргумента системе, которая ожидает один

2 являются "echo ErrMsg:% s >> err"

(const char *)ErrMsg

Я подозреваю, что вы имели в виду, так что объедините их, например. используйте snprintf

Хотя, если это фактический код, я бы вывел сообщение об ошибке непосредственно в файл, а не использовал бы систему, например. fprintf

0 голосов
/ 21 сентября 2009

системная функция имеет только один аргумент, но вы передали два.

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

вы разрешаете его, передавая только один аргумент, или переопределяя system () для принятия двух аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...