У вас, кажется, ошибочное мнение, что %s
в строке имеет какое-то специальное свойство. Это не так. Символ %
- это просто литерал %
. Контекст, в котором вы использовали его так, как вы, кажется, хотите, передает его в printf
, где он * по-прежнему просто литерал %
в строке, но строка представляет собой строку формата что printf
интерпретирует, чтобы знать, какие типы аргументов ожидать и как их форматировать, а не строку, которая должна быть напечатана сама.
Чтобы достичь того, что вы хотите здесь, вам нужно использовать дополнительный буферный массив для создайте свою строку и используйте что-то вроде:
snprintf(buf, sizeof buf,
"D:\\UltimateModManager\\mods\\%s\\.umm\\icon.bmp",
currentmod[i - 1]);
, затем передайте buf
в качестве аргумента SDL_LoadBMP
.