13 #define _TRUNCATE ((size_t)-1) 
   21 errno_t fopen_s(FILE **pfile, 
const char *filename, 
const char *mode);
 
   22 errno_t localtime_s(
struct tm* _tm, 
const time_t *time);
 
   23 errno_t mbstowcs_s(
size_t *pReturnValue, 
wchar_t *wcstr, 
size_t sizeInWords, 
const char *mbstr, 
size_t count);
 
   24 int sprintf_s(
char *buffer, 
size_t sizeOfBuffer, 
const char *format, ...);
 
   25 errno_t strcat_s(
char *strDestination, 
size_t numberOfElements, 
const char *strSource);
 
   26 errno_t strcpy_s(
char* strDestination, 
size_t numberOfElements, 
const char *strSource);
 
   27 errno_t strerror_s(
char* buffer, 
size_t numberOfElements, 
int errnum);
 
   28 errno_t strncat_s(
char *strDest, 
size_t numberOfElements, 
const char *strSource, 
size_t count);
 
   29 errno_t strncpy_s(
char *strDest, 
size_t numberOfElements, 
const char *strSource, 
size_t count);
 
   30 int vsnprintf_s(
char *buffer, 
size_t sizeOfBuffer, 
size_t count, 
const char *format, va_list argptr);
 
   31 errno_t wcscat_s(
wchar_t *strDestination, 
size_t numberOfElements, 
const wchar_t *strSource);
 
   32 errno_t wcscpy_s(
wchar_t* strDestination, 
size_t numberOfElements, 
const wchar_t *strSource);
 
   35 template<
size_t BufferSize> errno_t mbstowcs_s(
size_t *pReturnValue, 
wchar_t(&wcstr)[BufferSize], 
const char *mbstr, 
size_t count)
 
   37     return mbstowcs_s(pReturnValue, wcstr, BufferSize, mbstr, count);
 
   40 template<
size_t BufferSize> 
int sprintf_s(
char (&buffer)[BufferSize], 
const char* format, ...)
 
   43     va_start(arglist, format);
 
   44     int numCharsWritten = vsnprintf_s(buffer, BufferSize, BufferSize - 1, format, arglist);
 
   47     return numCharsWritten;
 
   50 template<
size_t BufferSize> errno_t strcat_s(
char (&strDestination)[BufferSize], 
const char* strSource)
 
   52     return strcat_s(strDestination, BufferSize, strSource);
 
   55 template<
size_t BufferSize> errno_t strcpy_s(
char (&strDestination)[BufferSize], 
const char* strSource)
 
   57     return strcpy_s(strDestination, BufferSize, strSource);
 
   60 template<
size_t BufferSize> errno_t strerror_s(
char(&buffer)[BufferSize], 
int errnum)
 
   62     return strerror_s(buffer, BufferSize, errnum);
 
   65 template<
size_t BufferSize> errno_t strncat_s(
char(&strDest)[BufferSize], 
const char *strSource, 
size_t count)
 
   67     return strncat_s(strDest, BufferSize, strSource, count);
 
   70 template<
size_t BufferSize> errno_t strncpy_s(
char(&strDest)[BufferSize], 
const char *strSource, 
size_t count)
 
   72     return strncpy_s(strDest, BufferSize, strSource, count);
 
   75 template<
size_t BufferSize> 
int vsnprintf_s(
char (&buffer)[BufferSize], 
size_t count, 
const char *format, va_list argptr)
 
   77     return vsnprintf_s(buffer, BufferSize, count, format, argptr);