char*strnewf(const char* fmt, ...){ va_list ap, apc; char* buffer; int buf_size; va_start(ap, fmt); va_copy(apc, ap); buf_size = vsnprintf(NULL, 0, fmt, apc) + 1; va_end(apc); buffer = malloc(buf_size); va_copy(apc, ap); vsnprintf(buffer, buf_size, fmt, apc); va_end(apc); va_end(ap); return buffer;}
char* string = strnewf("%s ate %d pigs", "maggie", 812);/* do stuff with string... */free(string);
#define strcasecmp stricmp