Strcpy 和strncpy sprintf 和_snprintf,snprintf的区别
Strncpy 和 _snprintf ,snprintf是边界安全的函数
1. Strcpy 和strncpy
char *strncpy(char *strDest,const char *strSource,size_t count );
//count = strdest的长度 – 1.最多从src到dest拷贝maxlen个字符,截尾dest 或用空字符填充dest.strncpy比strcpy安全。因为他需要指定你要拷贝的长度。不会溢出
LPTSTR strcpy(LPTSTR psz1,LPCTSTR psz2);容易造成溢出。
例子:
char* p="how are you ?";
char name[20]="ABCDEFGHIJKLMNOPQRS";
strcpy(name,p); //name改变为"how are you ? OPQRS " ====>错误!
Memset(name,0,sizeof(name))
strncpy(name,p,sizeof(name)) //name改变为"how are you ? " ====>正确!
2. sprintf 和_snprintf,snprintf
int _snprintf(
char *buffer,
size_t count,
const char *format [,
argument] ...
);// Count = buffer的长度 – 1. 最多从format到buffer拷贝count个字符,截尾dest 或用空字符填充dest. _snprintf比sprintf安全。因为他需要指定你要拷贝的长度。不会溢出
注:_snprintf 用在windows 平台下,sprintf用在linux 平台下。