【问题标题】:Concerning SDL_TTF? (C programming)关于 SDL_TTF? (C 编程)
【发布时间】:2016-12-14 01:52:45
【问题描述】:

我是一名编程初学者,但在使用 SDL_TTF 调用的函数时遇到了问题:

SDL_Surface *TTF_RenderText_Solid(TTF_Font *font, const char *text, SDL_Color fg);

这允许创建一个包含文本的表面,但我的问题是我需要将数字发送到第二个参数。第二个参数只接受char变量,而我的变量是int...

有没有办法通过将 int 数字存储到 char 变量中来绕过它......或者输入第二个参数以便它接受 int 变量的方法?呵呵..

【问题讨论】:

标签: c


【解决方案1】:

在 C 中没有将整数(或其他数字格式)自动转换为文本,您必须明确地进行。

例如,您可以编写一个包装函数来进行转换并调用 SDL 库调用:

#include <stdlib.h>

SDL_Surface* MyRenderInteger_Solid(TTF_Font* font, int value, SDL_Color fg)
{
   char numBuffer[20];
   itoa(value, numBuffer, 10); /* convert value to decimal string */
   return TTF_RenderText_Solid(font, numBuffer, fg);
}

注意“#include”应该在文件的顶部,而不是在你定义函数之前(除非你的函数也在源文件的顶部)。

【讨论】:

  • "itoa()" 被列为非标准函数,但很少有 C 运行时库没有它。您可以通过直接在对“TTF_RenderText_Solid()”的调用中使用“itoa()”的返回值来缩短代码,因为它返回包含数字字符串的缓冲区的地址。
  • 如果在您的库中找不到“itoa()”,可以在示例中将其替换为:snprintf(numBuffer, sizeof numBuffer, "%d", value);
猜你喜欢
  • 1970-01-01
  • 2010-12-31
  • 2013-11-22
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
  • 2014-11-18
  • 1970-01-01
相关资源
最近更新 更多