 sprintf関数は、大変便利な関数で頻繁に用いられますが、VS2005ではこれに代わって
sprintf_s関数が導入されました。
sprintf関数は、大変便利な関数で頻繁に用いられますが、VS2005ではこれに代わって
sprintf_s関数が導入されました。
int sprintf_s(
   char *buffer,
   size_t sizeOfBuffer,
   const char *format [,
      argument] ... 
);
bufferは、出力を格納するバッファを指定します。sizeOfBufferには、格納する最大も字数を指定します。
formatは、書式指定です。
関数が成功すると書き込まれた文字数が返され、失敗したときは-1が返されます。
では、サンプルを見てみましょう。
/* sprintf01.c */
#include <stdio.h>
int main()
{
	char szName[] = "マイケル", szBuf[64];
	int nAge = 10;
	double bl = 172.5;
	sprintf_s(szBuf, sizeof(szBuf), 
		"%sは%d歳です。身長は%5.1fcmです\n", 
		szName, nAge, bl);
	printf(szBuf);
	return 0;
}
実行結果は次のようになります。
 
では、戻り値も調べてみましょう。
/* sprintf02.c */
#include <stdio.h>
int main()
{
	char szName[] = "田中佳子", szBuf[64];
	int nRet, nAge = 20;
	nRet = sprintf_s(szBuf, sizeof(szBuf), 
		"私の名前は%sです\n年齢は%d歳です\n", 
		szName, nAge);
	printf(szBuf);
	sprintf_s(szBuf, sizeof(szBuf),
		"返された値は%dです\n",
		nRet);
	printf(szBuf);
	return 0;
}
実行結果は次のようになります。
 
この例では、文字列はANSCIを使っているので返される値は
文字数ではなくバイト数である点に注意してください。
ま、どうということもありませんね。
Update Jul/06/2006 By Y.Kumei