什麼是CRT函數以及常用的CRT函數

什麼是CRT函數 

C Runtime是windows平臺下的一個概念。一般來說,CRT函數就是標準的C語言函數。例如,printf、scanf、strlen、fopen等函數就屬於CRT函數。

在windows下所有的CRT函數最終都是轉化成爲win32 API來執行的。windows本身並沒有在內核之上提供對CRT的支持。 CRT既可以通過靜態連接來實現,也可以通過動態鏈接來實現(MSVCRT.DLL)。

 

常用的安全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

 

轉載鏈接:http://blog.csdn.net/huangxy10/article/details/8310087

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章