Вы можете использовать asprintf () как расширение GNU для выполнения форматированного вывода, который хранится в новой выделенной памяти и должен быть освобожден позже.
char* str;
asprintf(&str, "It is a number %d\n", 1);
//...
free(str);
Вместо этого вы можете использовать snprintf (), который ничего не выделил для вас, он просто заполняет массив символов для вас (как форматированный вывод).
char str[100];
snprintf(str, 100, "It is number %d\n", 1);
Также вы можете использовать g_string_printf (), которая является функцией glib, но она сохраняет отформатированный вывод в переменную GString.
GString str;
g_string_printf(&str, "It is number %d\n", 1);
//...
g_string_free(&str, TRUE);
Когда вы получили свою строку в виде форматированного вывода, вы можете использовать ее как текст для любого виджета GTK.