char sprintf()句柄的限制

时间:2012-05-18 20:08:26

标签: c++ c linux

我有2个程序..一个要学习,另一个包括解析..所以..我有一个计算每秒游戏帧数的功能。

其中一个:sprintf(FPS, "Immortal Conflicts: FPS: %d,", misc.FPS); 没有问题另一个

sprintf(FPS, "Immortal_Conf %d", misc.FPS); 可能有一个原因,为什么由于某种原因,当我在第二个函数数据中输入更多字符时...堆叠字符或其他东西,因为数字长度为8位并且不会改变。

它写得像Immortal_Conflicts:FPS:8454390345

*我已经注意到,当我从地方改变它时......它吓坏了......哈哈

char FPS [2];

哦,它与FPS一起工作[20] =哦我对数组和字符一无所知..事实上......我学到了一些东西..大声笑我发现了我的问题lol

1 个答案:

答案 0 :(得分: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.