Есть ли функция типа printf, которая может возвращать строку вместо ее печати? У меня есть функция, которая печатает строку в определенном цвете, но она должна быть строковым литералом вместо принятия переменных, таких как printf.printf Что возвращает строку
// Function declaration (Assums YELLOW and NORMAL are the unix constants for terminal colors
void pYellow(char *str) {
printf("%s%s%s", YELLOW, str, NORMAL);
}
//Function call
void pYellow("This is a string");
Если я хотел напечатать цвет с переменной, он не будет работать. Например, pYellow("Num: %d", 42);
даст ошибку, потому что у нее слишком много параметров. И делать pYellow(printf("String"));
тоже не получится.
TL: DR Я хочу знать, есть ли метод printf, который возвращает строку вместо ее печати.
Вы можете использовать snprintf, как предложено 'dom0', или вы можете использовать функцию, которая динамически распределяет память и возвращает указатель. Существует нестандартный, называемый 'asprintf', однако вы можете реализовать это в стандарте C в нескольких строках, делегируя' vsnprintf'. –
http://en.cppreference.com/w/cpp/io/c/fprintf –
См. Также [Заменить или обходной путь для 'asprintf()' в AIX] (http://stackoverflow.com/questions/4899221/substitute -или-обходной путь-к-asprintf-на-Экс). –