로컬 시간과 지정된 문자열을 출력하는 함수를 작성하려고합니다. 가독성을 위해 끝에 줄 바꿈 문자를 추가합니다.Fprintf 디버그에서의 기괴한 출력
는 현재 코드 그게 전부 :
void errLog(const std::string errorString)
{
FILE* errorLog;
fopen_s(&errorLog, "ErrorLog.txt", "ab+");
time_t rawTime;
time (&rawTime);
struct tm errorTime;
localtime_s(&errorTime, &rawTime);
char timeString[20];
strftime(timeString, 20, "%d-%m-%Y %H:%M:%S", &errorTime);
fprintf(errorLog, "%s Error: %s\n", timeString, errorString);
fclose(errorLog);
}
출력은 내가 릴리스 모드에서 예상 된 일이다.
16-09-2014 10:58:45 Error: devFont.ttf load failed
을하지만 디버그 모드에서 출력은 임의의 문자열을 찍은 것 같습니다 : 작업 프로그램에 Errorlog.txt에 의도 한대로,이 새로운 라인을 가지고있다. 이러한 저 명백 설명없이 임의의 두 개의 연속적인 출력이다 :
16-09-2014 11:13:57 Error: ΘυB
16-09-2014 11:14:09 Error: Μϊ;
함수가 호출에 하드 코딩 된 문자열 부여되므로 errlog에의 입력이 완전히 동일하다.
fprintf(errorLog, "%s Error: %s\n", timeString, errorString.c_str());
그것은 새로운 건설을 강제하는 것보다 const를 참조 const std::string& errorString
로 매개 변수를 받아들이는 일반적으로 대부분의 경우에 더 효율적입니다 :
일부 메모리 누수 또는 메모리 손상 * 기타 일 수 있습니다. –
fprintf 호출에서 errorString.c_str()을 시도하십시오. –