これの、セキュリティ強化バージョンが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