2016-12-14 77 views
0

我在programmation一個初學者,我一直有一個由SDL_TTF調用的函數麻煩:關於SDL_TTF? (C編程)

SDL_Surface * TTF_RenderText_Solid(TTF_Font *字體,爲const char *文本,SDL_Color FG);

這允許創建一個有文字的表面,但我的問題是,我需要的數字發送到第二個參數。第二個參數只接受字符變量,而我的變量是一個int ...

有沒有辦法繞過通過放養INT編號爲char變量...或將輸入第二個參數,這樣的方式它接受int變量?呵呵..

+1

可能的重複[Convert int to string in standard C](http://stackoverflow.com/questions/36274902/convert-int-to-string-in-standard-c) –

回答

0

在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」應該是在文件的頂部,而不是之前你定義了這個函數(除非你的函數也是朝向源文件的頂部)。

+0

「itoa()」已列出作爲非標準函數,但很少有C運行時庫沒有它。您可以使用的返回值縮短代碼「itoa()」直接調用「TTF_RenderText_Solid()」,因爲它返回一個包含數字字符串緩衝區的地址。 – Daniel

+0

如果你不能找到 「itoa()」 在您的圖書館,你可以將其替換爲在例如:'的snprintf(numBuffer,的sizeof numBuffer, 「%d」,值);' – Daniel