VS2005以降でないと使用できません。
errno_t _cgets_s( char *buffer, size_t sizeInBytes, size_t *pSizeRead );bufferは、読み取った文字列を格納するバッファです。
sizeInBytesは、バッファのサイズです。
pSizeReadは、実際に読み取られた最大文字数です。
この関数を使うと、ユーザーが不用意に大量の入力を行っても安全です。
また、2バイト文字は読み込みません。
では、簡単なサンプルをみてみましょう。
/* cgets01.c */ #include <stdio.h> #include <conio.h> int main() { char szBuf[32]; size_t read; printf("何か入力してください-- "); _cgets_s(szBuf, sizeof(szBuf), &read); printf("入力された文字列は---%sで、読み取ったバイト数は%dバイト\n", szBuf, read); return 0; }では、動作を確認してみましょう。
こんどは、わざとに長い文字列を入力してみます。
バッファあふれを起こさずに済んでいますね。
こんどは、2バイト文字を入力してみます。
2バイト文字が出てきたら、それ以降無視されていますね。
Update Sep/09/2007 By Y.Kumei