C не поддерживает динамические строки, поэтому то, что вы пытаетесь сделать, невозможно. Возвращаемое значение из вашей функции createString () является переменной, а не литералом, поэтому вы не можете объединить его с другими литералами. При этом, если вам действительно важно иметь это в одной строке, вы можете создать вспомогательную функцию, чтобы облегчить это, что-то вроде следующего:
char * my_formatter( const char * format, ... )
{
...
}
myfunction(my_formatter("arg1%sarg2", createString()));
Однако при таком подходе возникают некоторые проблемы с управлением памятью и безопасностью потоков.