天天看點

常用的安全CRT函數

常用的安全CRT函數

常用的安全CRT函數

安全CRT(C Runtime Library = C運作時間庫)函數,是微軟公司對C/C++語言的擴充。它在原來函數名後添加了“_s”字尾;一般傳回出錯代碼;并将原來的函數傳回值,作為一個參數,添加到函數輸入參數清單的最後;對帶緩沖區參數的函數,還添加了表示緩沖區大小的輸入參數,以防止記憶體溢出。

在VC05中,如果不使用這些安全性函數,編譯器會報告警告性錯誤。

下面是若幹常用的安全CRT函數:

char *gets_s( char *buffer, size_t sizeInCharacters); // <stdio.h>

wchar_t *_getws_s( wchar_t *buffer, size_t sizeInCharacters); // <stdio.h> or <wchar.h>

errno_t _itoa_s( int value, char *buffer, size_t sizeInCharacters, int radix ); // <stdlib.h>

errno_t _itow_s( int value, wchar_t *buffer, size_t sizeInCharacters, int radix ); // <stdlib.h>

errno_t _ultoa_s( unsigned long value, char *str, size_t sizeOfstr, int radix ); // <stdlib.h>

errno_t _ultow_s( unsigned long value, wchar_t *str, size_t sizeOfstr, int radix ); // <stdlib.h>

int printf_s( const char *format [, argument]... ); // <stdio.h>

int wprintf_s( const wchar_t *format [, argument]... ); // <stdio.h> or <wchar.h>

int scanf_s( const char *format [, argument]... ); // <stdio.h>

int wscanf_s( const wchar_t *format [, argument]... ); // <stdio.h> or <wchar.h>

int sprintf_s( char *buffer, size_t sizeOfBuffer, const char *format [, argument] ... ); // <stdio.h>

int swprintf_s( wchar_t *buffer, size_t sizeOfBuffer, const wchar_t *format [, argument]...); // <stdio.h> or <wchar.h>

int sscanf_s( const char *buffer, const char *format [, argument ] ...); // <stdio.h>

int swscanf_s( const wchar_t *buffer, const wchar_t *format [, argument ] ...); // <stdio.h> or <wchar.h>

int fprintf_s( FILE *stream, const char *format [, argument ]...); // <stdio.h>

int fwscanf_s( FILE *stream, const wchar_t *format [, argument ]... ); // <stdio.h> or <wchar.h>

int fscanf_s( FILE *stream, const char *format [, argument ]... ); // <stdio.h>

int fwscanf_s( FILE *stream, const wchar_t *format [, argument ]... ); // <stdio.h> or <wchar.h>

errno_t strcpy_s( char *strDestination, size_t sizeInBytes, const char *strSource ); // <string.h>

errno_t wcscpy_s( wchar_t *strDestination, size_t sizeInWords, const wchar_t *strSource ); // <string.h> or <wchar.h>

errno_t fopen_s( FILE** pFile, const char *filename, const char *mode ); // <stdio.h>

errno_t _wfopen_s( FILE** pFile, const wchar_t *filename, const wchar_t *mode ); // <stdio.h> or <wchar.h>

errno_t rand_s( unsigned int* randomValue); // <stdlib.h>

下面是若幹安全函數原型用到的資料類型的定義:

#include <crtdefs.h>

typedef  int  errno_t;

typedef  unsigned short  wchar_t;

#ifdef  _WIN64

typedef  unsigned __int64  size_t;

#else

typedef  _W64 unsigned int  size_t;

#endif

---

本文章使用開源内容管理kicoy釋出

轉載自李才偉老師的課件

繼續閱讀