При использовании% s для установки текста в моем пути он не найдет его - PullRequest
0 голосов
/ 07 февраля 2020

В настоящее время я пытаюсь читать из нескольких каталогов, но когда я задаю путь, используя% s (имеет сохраненный массив всех расположений файлов), он не будет читать.

SDL_Surface* image = SDL_LoadBMP("D:\\UltimateModManager\\mods\\%s\\.umm\\icon.bmp", currentmod[i - 1]);

Он печатает расположение просто отлично на консоль, но он не будет читать мое изображение. Но если я установлю истинный путь, это будет достаточно странно.

1 Ответ

2 голосов
/ 07 февраля 2020

У вас, кажется, ошибочное мнение, что %s в строке имеет какое-то специальное свойство. Это не так. Символ % - это просто литерал %. Контекст, в котором вы использовали его так, как вы, кажется, хотите, передает его в printf, где он * по-прежнему просто литерал % в строке, но строка представляет собой строку формата что printf интерпретирует, чтобы знать, какие типы аргументов ожидать и как их форматировать, а не строку, которая должна быть напечатана сама.

Чтобы достичь того, что вы хотите здесь, вам нужно использовать дополнительный буферный массив для создайте свою строку и используйте что-то вроде:

snprintf(buf, sizeof buf,
         "D:\\UltimateModManager\\mods\\%s\\.umm\\icon.bmp",
         currentmod[i - 1]);

, затем передайте buf в качестве аргумента SDL_LoadBMP.

...