*printf
함수에서 필요한 문자의 목표 길이가 필요합니다. 내 시나리오는 결국 문자열을 작성해야하는 로깅 기능입니다 (관련이없는 일은 char *
으로 끝나야합니다).* printf 함수 군의 목표 길이를 얻으십시오.
나는 현재이 있습니다
매력처럼 작동하지만, 지나치게 복잡한 것 같다void log(char *format, ...)
{
char *full_message, *message;
FILE *nullfile;
va_list args;
va_start(args, format);
nullfile = fopen("/dev/null", "w");
message_len = vfprintf(nullfile, format, args) + 1;
fclose(nullfile);
va_end(args);
va_start(args, format);
message = malloc(message_len);
vsnprintf(message, message_len, format, args);
va_end(args);
// now do something with the final message
}
. 더 쉬운 방법이 있습니까? 뭔가 더 의미가 있습니다.
추가 세부 사항 : 나는 마지막으로 문자열을 더 포맷하고 OpenSSL BIO
에 덤프하므로 vfprinf
을 사용하는 것만 큼 쉽지는 않습니다.