나는 현재 날짜와 시간을 인쇄해야하는 간단한 로그 기능을 가지고 있습니다. 나는 char *
을 반환하는 함수 내에서이 작업을 수행하고 있습니다. 이 char *
을 fprintf()
으로 설정하려고하면 파일에 문자열이 출력되지 않습니다. 이유는 무엇입니까?fprintf가 const char *를 파일에 인쇄하지 않습니다.
const char *time =__TIME__; // compilation time
char *currentTime = UT::CurrentDateTime(); // it's a static method; also tried to set it to const
fprintf(fp, "%s %s %s %s %s %d %s\n", __TIME__, pType, __DATE__,
currentTime, pFileName, lineNo, pMsg.c_str());
fflush(fp);
모든 일이 날짜/시간 char *
를 제외하고 인쇄 : 여기
char * UT::CurrentDateTime()
{
char buffer [50];
time_t t = time(0); // get time now
struct tm * now = localtime(& t);
int n=sprintf(buffer, "%d:%d:%d %d:%d:%d:", (now->tm_year + 1900),
(now->tm_mon + 1), now->tm_mday, now->tm_hour, now->tm_min,
now->tm_sec);
return buffer;
}
로그입니다 : 여기
는 날짜 - 시간을 구성하는 기능입니다. 왜?
C++ 컴파일러로 C 코드를 작성하는 대신 _embrace_ C++을 사용해야합니다. C++은 문자열 (및 파일 출력)에 형식화 된 출력을하는 방법 (C++의 관점에서 보면 더 좋습니다) - 예를 들어'stringstream'을보십시오. – paxdiablo
'struct tm'에서 날짜/시간 값을 포맷하기 위해'strftime()'사용을 고려하십시오. 또한, 'const char * time' 변수는 사용되지 않아 유익하지 않을 것입니다. 드물게 모든 로그 메시지에 컴파일 날짜와 시간을 기록해야합니다. 제품의 어떤 v 전이 로그에 기록되는지를 기록하기 위해 로그를 열 때 한 x 수행 할 수 있습니다. –