포맷으로 돌아 가기 나는 같은 것을 할 싶습니다 : C 함수가 문자열
writeLog(printf("This is the error: %s", error));
그래서 내가 형식화 한 문자열을 반환하는 함수를 찾고 있어요.
포맷으로 돌아 가기 나는 같은 것을 할 싶습니다 : C 함수가 문자열
writeLog(printf("This is the error: %s", error));
그래서 내가 형식화 한 문자열을 반환하는 함수를 찾고 있어요.
그런 함수가 존재하지 않는다면 약간 다른 접근법을 고려하십시오. 즉, 문자열과 가변 개수의 인수를 취합니다. 그런 다음 내부적으로 메시지 서식을 지정하십시오. 이렇게하면 메모리 관리 문제가 해결되고 기존의 writeLog
은 손상되지 않습니다. 이 가능 찾을 경우
, 당신은이 라인을 따라 뭔가를 사용할 수 있습니다
void writeLog(const char* format, ...)
{
char msg[100];
va_list args;
va_start(args, format);
vsnprintf(msg, sizeof(msg), format, args); // do check return value
va_end(args);
// write msg to the log
}
좋은 접근 방식을 가져 주셔서 감사합니다. 정확히 내가 무엇을 찾고 있었는지. – Zulakis
표준 라이브러리에는 이러한 기능이 없으므로 표준 라이브러리에는 이러한 기능이 없습니다. 원한다면 직접 쓰실 수 있습니다. 생각해 볼 필요가있는 것은 다음과 같습니다. 누가 반환 된 문자열에 대한 저장소를 할당 할 것이며 누가 그것을 해제 할 것입니까? 스레드로부터 안전 할 것인가 아닌가? 반환되는 문자열의 최대 길이에 제한이 있습니까?
하는'snprintf'를 검색합니다. –
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/ for sprintf – Mark
죄송 합니다만 snprintf는 형식이 지정된 문자열을 변수에 넣는 것처럼 sprintf와 거의 같습니다. 내가 찾고있는 것은 형식화 된 문자열을 직접 반환하는 함수입니다. – Zulakis