assert((strDest != NULL) && (strSource != NULL)&& (size1>=size2)); // 防御主要在于使用断言,必须都是非空指针,而且Dest长度大于等于Source的长度才能继续执行函数 byte *pbTo = (byte *) strDest; // 防止改变strDest 的地址 byte *pbFrom = (byte *) strSource; // 防止改变...
防御性编程C语言代码
#include<assert.h>char* strcpy(char* strDest, char* strSource)
{
int size1,size2;
size1=strlen(strDest);//也可用while判断到'\0',size1++;
size2=strlen(strSource);//同上
assert((strDest != NULL) && (strSource != NULL)&& (size1>=size2)); // 防御主要在于使用断言,必须都是非空指针,而且Dest长度大于等于Source的长度才能继续执行函数
byte *pbTo = (byte *) strDest; // 防止改变strDest 的地址
byte *pbFrom = (byte *) strSource; // 防止改变strSource 的地址
while(size1-- > 0 )
*pbTo ++ = *pbFrom ++ ;
*pbTo='\0';
return strDest;
}2014-01-15
我给你得建议是去读一下微软得CRT库源码,那里面得strcpy()是非常高效得,速度是上面给得代码得四倍,这个你读了代码就明白是怎么做得了2014-01-15