0

私は 2 つのプログラムを持っています.1 つは学習するプログラムで、もう 1 つはそれを分析するプログラムです。

それらのうちの1つ:sprintf(FPS, "Immortal Conflicts: FPS: %d,", misc.FPS); もう1つは問題ありません

sprintf(FPS, "Immortal_Conf %d", misc.FPS); 何らかの理由で、2番目の関数データにさらに文字を入力すると..数字が8桁の長さで変化しないため、文字または何かをスタックする理由があるでしょうか。

Immortal_Conflicts: FPS: 8454390345 のように書きました

*私は、私が場所からそれを変更するとき..それがびっくりすることに気づきました...笑

char FPS[2];

ああ、それは FPS[20] で動作します =O 私は配列と文字について何も知りませんでした.. 実際.. 何かを学びました.. 笑 私は自分の問題を見つけました 笑

4

1 に答える 1

3

FPS2 文字しか保持できないため、バッファ オーバーランが発生します。結果の文字列を保持するのに十分な大きさが必要です。

これは C++であるstd::ostringstreamため、文字列の作成に使用することをお勧めします。

#include <sstream>

std::ostringstream FPS;
FPS << "Immortal Conflicts: FPS: " << misc.FPS; // FPS.str() will return a
                                                // std::string of the data.
于 2012-05-18T20:37:36.167 に答える