Есть функция, которая возвращает отформатированный XPath:
char* xpath_format(const char* xpath, ...)
{
va_list arguments;
va_start(arguments, xpath);
size_t xpath_formatted_size = vsnprintf(NULL, 0, xpath, arguments);
char* xpath_formatted = malloc(xpath_formatted_size);
vsnprintf(xpath_formatted, xpath_formatted_size, xpath, arguments);
va_end(arguments);
return xpath_formatted;
}
и собственно её вызов:
int main(void)
{
char* xpath_formatted = xpath_format("//%s[@%s=\"%s\"]", "vault", "name", "vault-name");
printf("%s\n", xpath_formatted);
free(xpath_formatted);
exit(EXIT_SUCCESS);
}
Но на выходе вместо ожидаемой строки //vault[@name="vault-name"] поялвяется только мусор вида "//[��UH��AWAVAUATSH��8L�%�I="(null)"]".
Как это исправить?