//C++としてコンパイルしています。
#include<cstdio>
int main()
{
char buf[1024]={0};
int n=0;
std::sprintf(buf,"%x%n",4892345,&n);
std::printf("%s,%d",buf,n);
}
エラーが起きる最小のプログラムです。エラーメッセージも一応添付しておきます。VC2005のsprintf
-
tk-xleader
VC2005のsprintf
VC2005で、次のプログラムを実行すると、実行時エラーが起きてしまいます。なぜでしょうか?
-
御津凪
Re:VC2005のsprintf
MSDN で調べてみると、%nは「ストリームまたはバッファにこれまでに書き込まれた文字数」
とあります。
そしてこれは、セキュリティ上の理由で限定では無効となっていて、
実行時エラー(無効なパラメータ ハンドラ)が発生します。
%nを有効にするには、 _set_printf_count_output(1); を事前に呼び出す必要があります。
とあります。
そしてこれは、セキュリティ上の理由で限定では無効となっていて、
実行時エラー(無効なパラメータ ハンドラ)が発生します。
%nを有効にするには、 _set_printf_count_output(1); を事前に呼び出す必要があります。