私のコード (C++ ではなく厳密な C) では、vsnprintf を次のように使用します。
char* buf = NULL;
size_t sz;
sz = vsnprintf( buf, 0, format, args); // Ask vsnprintf how big a buffer we need
buf = (char*) malloc(sz + 1);
vsnprintf( buf, sz, format, args); // Now actually fill the buffer
/* Use buf in a dialog box... then: */
free(buf);
ただし、MS Visual C++ (MSVS10) コンパイラは次のように警告します。
warning C4996: 'vsnprintf': This function or variable may be unsafe. Consider using vsnprintf_s instead.
ただし、バッファに NULL を渡すと、出力されるデータの量が記述されるという気の利いた機能はありvsnprintf_s
ません。代わりに、-1 を返すように文書化されています。
vsnprintf
必要なサイズを判断することで安全に使用できていると感じており、推奨される交換vsnprintf_s
はまったく同じではありません.
より良い/よりスマートな使用方法がありませんvsnprintf_s
か??