今日は奇妙な問題に遭遇しましたprintf()
。しかし、分析しても答えは見つかりませんでした。したがって、ここで共有します。printf()
私はこれらの3つのステートメントを試しました:
printf("\nValue of this division is %f", (double)873/(double)65);
期待どおりに正しい出力を出力します。
printf("\nSome message with an integer here %d followed by floats %f, %f, %f", 2013, 987/432, 873/65, 983/81);
間違った値を与えられた (double にキャストしなかったためか?)
printf("\nSome message with an integer here %d followed by floats %f, %f, %f and now string at end: %s", 2013, 987/432, 873/65, 983/81, "Some trial string here");
printf()
ここで墜落!そして、これは私に2つの質問を提起します:
MSDN で提供されている "FormatOutput(LPCSTR formatstring, ...)" の例を見ました。この例では、固定幅の宛先バッファーを割り当ててから呼び出します
vsnprintf()
。printf()
私は同じ線に沿って動作すると信じています。しかし、内部バッファサイズがどこにも見つかりませんでしprintf()
た。メモリを動的に割り当てる場合、バッファ サイズをどのように計算しますか?printf()
上記の行でvsnprintf()
もクラッシュするため、クラッシュします(はい、上記のパラメーターでFormatOutput
指定されたサンプルコードを試しました)。vsnprintf()
しかし、なぜ最終的にクラッシュするのでしょうか?