sprintf_s、swprintf_s

提供: RAD Studio
移動先: 案内検索

stdio.h:インデックス への移動



ヘッダー ファイル

stdio.h

カテゴリ

書式付き入出力関数

プロトタイプ

int sprintf_s(char * restrict s, rsize_t n, const char * restrict format, ...);

int swprintf_s(wchar_t * restrict s, rsize_t n, const wchar_t * restrict format, ...);

説明

sprintf の代わりとなる、セキュリティを強化した関数です。

sprintf_s は、sprintf と同等のものですが、s および format が NULL ポインタにならないよう実行時制約が追加されています。 それ以外に、format に含まれる %s 形式指定子それぞれに対して NULL ではない引数が存在すること、format 内で %n 指定子が使われないこと、という制約もあります。

実行時制約の違反が起き、s が NULL ポインタでなく、かつ、n がゼロより大きく RSIZE_MAX より小さい場合、この関数は s[0] に '\0' を出力します。

snprintf_s、snwprintf_s と異なり、s が指す先の配列よりも n の方が大きい場合には、実行時制約例外が発生します。

戻り値

成功すると、sprintf_s は、文字列の終わりを示す '\0' を除いた出力文字数を返します。 エンコード エラーが発生すると、sprintf_s は負の値を返します。 それ以外のエラーが発生した場合にはゼロを返します。

#include <stdio.h>
#include <math.h>
int main(void)
{
   char buffer[80];
   sprintf_s(buffer, 40, "An approximation of Pi is %f\n", M_PI);
   puts(buffer);
   return 0;
}

移植性

POSIX Win32 ANSI C ANSI C++

sprintf_s

+

+

+

+

swprintf_s

+

+

+

関連項目