2012-05-18 65 views
0

我有2個程序..一個學習和另一個包括檢測它..所以..我有一個函數,每秒計算遊戲幀。char sprintf的限制()句柄

在其中的一個:sprintf(FPS, "Immortal Conflicts: FPS: %d,", misc.FPS); 在另一個

sprintf(FPS, "Immortal_Conf %d", misc.FPS); 沒有問題,難道還有一個原因,因爲某些原因,當在第二功能數據I輸入多個字符..堆棧中的字符或因爲這個數字像8位數字一樣長而且不會改變。

它寫道像Immortal_Conflicts:FPS:8454390345

*香港專業教育學院注意到,當我改變它從一個地方..在IT怪胎了...哈哈

焦炭FPS [2];

哦它與FPS工作[20] = O我不知道有關數組和人物..其實..我學到了什麼..哈哈,我發現我的問題笑

+3

您是否嘗試過'snprintf'? http://linux.die.net/man/3/snprintf – robert

+2

如何定義'FPS'?可能是一個緩衝區溢出 – littleadv

+0

snprintf墜毀的應用程序.. –

回答

3

存在一個緩衝區溢出爲FPS只能容納兩個字符。它需要足夠大以容納結果字符串。

由於這是C++建議使用std::ostringstream來構建你的字符串:

#include <sstream> 

std::ostringstream FPS; 
FPS << "Immortal Conflicts: FPS: " << misc.FPS; // FPS.str() will return a 
               // std::string of the data.