第140章 sscanf関数のセキュリティ強化版


sscanf関数は文字列から書式付きデータを読み込みます。



これの、セキュリティ強化バージョンがsscanf_s関数です。

VS2005以降でないと使用できません。

stdio.hをインクルードする必要があります。

int sscanf_s(
   const char *buffer,
   const char *format [,
      argument ] ...
);
bufferには、データが格納されているバッファを指定します。

formatには、書式指定文字列を指定します。これは、scanf関数のそれと同じです。

cやsの時は、バッファのサイズを指定する、追加パラメータが必要です。

これは、unsignedになります。

では、簡単なサンプルを見てみましょう。

/* sscanf01.c */

#include <stdio.h>

int main()
{
	char szBuf[32];
	char *lpszStr = "12.95";
	int i;
	float f;
	char c;

	sscanf_s(lpszStr, "%s", szBuf, (unsigned)sizeof(szBuf));
	sscanf_s(lpszStr, "%d", &i);
	sscanf_s(lpszStr, "%f", &f);
	sscanf_s(lpszStr, "%c", &c, (unsigned)sizeof(c));

	printf("%s\n", szBuf);
	printf("%d\n", i);
	printf("%f\n", f);
	printf("%c\n", c);

	return 0;
}
実行結果は、次のようになります。



使い方は簡単ですね。書式指定文字列により、追加のパラメータが必要になることに注意してください。


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

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