【问题标题】:When using %s to set text in my path it will not find it当使用 %s 在我的路径中设置文本时,它不会找到它
【发布时间】:2020-02-07 03:07:53
【问题描述】:

我目前正在尝试从多个目录中读取,但是当我使用 %s 设置路径时(保存了所有文件位置的数组),它将无法读取。

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

它将位置很好地打印到控制台上,但它不会读取我的图像。但如果我设置了一条真正的路径,那就够奇怪了。

【问题讨论】:

  • 信息不足。不知道你想达到什么目的。快速搜索显示SDL_LoadBMP 只接受一个const char* 参数。
  • @DeiDei:我认为很清楚 OP 想要做什么;这不是语言的工作方式,

标签: c path sdl-2 sdl-image


【解决方案1】:

您似乎误解了字符串中的%s 具有某些特殊属性。它没有。 % 字符只是文字 %。您以您想要的方式使用它的上下文是将它传递给printf,其中*仍然只是字符串中的文字%,但该字符串是一个格式字符串 printf 解释以了解期望的参数类型以及如何格式化它们,而不是要打印的字符串本身。

要在这里实现你想要的,你需要使用一个额外的缓冲区数组来构造你的字符串,并使用类似的东西:

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

然后将buf 作为参数传递给SDL_LoadBMP

【讨论】:

  • 谢谢,我想系统会按原样读取它,这是有道理的
猜你喜欢
  • 2020-06-28
  • 1970-01-01
  • 2014-08-06
  • 2016-11-24
  • 2011-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多