第127章 文字列を取り扱う新しい関数 その3


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を使っているので返される値は 文字数ではなくバイト数である点に注意してください。

ま、どうということもありませんね。


[Index][総合Index] [Previous Chapter] [Next Chapter]

Update Jul/06/2006 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。