функция c для возврата отформатированной строки
Я хотел бы сделать что-то вроде этого:
writeLog(printf("This is the error: %s", error));
поэтому я ищу функцию, которая возвращает отформатированную строку.
2 ответов
учитывая, что такой функции не существует, рассмотрим несколько иной подход: make writeLog
printf-like, т. е. возьмите строку и переменное количество аргументов. Затем отформатируйте сообщение внутри. Это решит проблему управления памятью и не нарушит существующие способы использования 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
}
в стандартной библиотеке нет такой функции, и в стандартной библиотеке ее никогда не будет.
Если вы хотите, вы можете написать его самостоятельно. Вот о чем вам нужно подумать:
- кто будет выделять хранилище для возвращаемой строки?
- кто освободит хранилище для возвращаемой строки?
- это будет потокобезопасно или нет?
- будет ли ограничение на максимальную длину возвращенный струна или нет?