Вы передаете 2 аргумента системе, которая ожидает один
2 являются
"echo ErrMsg:% s >> err"
(const char *)ErrMsg
Я подозреваю, что вы имели в виду, так что объедините их, например. используйте snprintf
Хотя, если это фактический код, я бы вывел сообщение об ошибке непосредственно в файл, а не использовал бы систему, например. fprintf