One viable approach might be to do something like the following:
void putline(unsigned fmt,...)
{ static char format[MAXFMT];
static char buffer[MAXLIN];
/* Retrieve format string fmt from FLASH into 'format' */
/* Assemble print line in 'buffer' */
Serial.println(buffer);
}
if you made '#' the substitution character, fmt == 0 corresponds to
"
The phone number of # is #
", name = "John Smith", and phone = "123-456-7890", then the callputline(0,name,phone);
would result in retrieving the appropriate format string, performing the two substitutions, and outputting the text line you want, ie:
The phone number of John Smith is 123-456-7890