Здравствуйте. Посмотрите, пожалуйста, свежим профессиональным взглядом. Вот это вот:
void LogError(int iErrorNum, const char *cInputString){
char *cBuffer=new char[255];
time_t *stmLocalTime_t=new time_t;
time(stmLocalTime_t);
tm *stmLocalTime;
stmLocalTime=localtime(stmLocalTime_t);
sprintf(cBuffer,"echo \"%d/%d/%d - %d:%d:%d ",stmLocalTime->tm_mday,stmLocalTime->tm_mon+1,
stmLocalTime->tm_year+1900,stmLocalTime->tm_hour,
stmLocalTime->tm_min,stmLocalTime->tm_sec);
if(iErrorNum==0){
sprintf(cBuffer+strlen(cBuffer),cInputString);
}else{
switch(iErrorNum){
case 0:
break;
default:
sprintf(cBuffer+strlen(cBuffer),"%s",strerror(errno));
break;
}
}
sprintf(cBuffer+strlen(cBuffer),"\" >> run.log");
system(cBuffer);
}