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;
}
実行結果は、次のようになります。
使い方は簡単ですね。書式指定文字列により、追加のパラメータが必要になることに注意してください。
Update Sep/11/2007 By Y.Kumei