最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

【使用strcpy的几点心得】

来源:动视网 责编:小OO 时间:2025-09-30 08:32:41
文档

【使用strcpy的几点心得】

根据《出现频率最高的笔试题》cphj(原作),及众多的网友的观点。本人做了以下总结:大多数人都同意以下这个写法:只是个人风格有些不同而已。char*strcpy(char*dest,constchar*src){assert(NULL!=dest);assert(NULL!=src);char*tmp=dest;while('\\0'!=(*tmp++=*src++))//因为*tmp不是布尔值所以有必要比较;return(dest);}而根据MS中的定义如下:(%VC%/vc7/crt/sr
推荐度:
导读根据《出现频率最高的笔试题》cphj(原作),及众多的网友的观点。本人做了以下总结:大多数人都同意以下这个写法:只是个人风格有些不同而已。char*strcpy(char*dest,constchar*src){assert(NULL!=dest);assert(NULL!=src);char*tmp=dest;while('\\0'!=(*tmp++=*src++))//因为*tmp不是布尔值所以有必要比较;return(dest);}而根据MS中的定义如下:(%VC%/vc7/crt/sr


根据《出现频率最高的笔试题》cphj(原作),及众多的网友的观点。本人做了以下总结:

大多数人都同意以下这个写法:只是个人风格有些不同而已。

char *strcpy(char* dest, const char* src)

{

assert(NULL != dest);

assert(NULL != src);

char *tmp = dest;

while('\\0' != (*tmp++=*src++)) //因为*tmp不是布尔值所以有必要比较

;

return(dest);

}

而根据MS中的定义如下:

(%VC%/vc7/crt/src/intel/strcat.asm)

page

;***

;char *strcpy(dst, src) - copy one string over another

;

;Purpose:

; Copies the string src into the spot specified by

; dest; assumes enough room.

;

; Algorithm:

; char * strcpy (char * dst, char * src)

; {

; char * cp = dst;

;

; while( *cp++ = *src++ )

; ; /* Copy src over dst */

; return( dst );

; }

;

;Entry:

; char * dst - string over which "src" is to be copied

; const char * src - string to be copied over "dst"

;

;Exit:

; The address of "dst" in EAX

;

;Uses:

; EAX, ECX

;

;Exceptions:

;**********************************************************************

1.没有检查输入的两个指针是否有效。

2.没有检查两个字符串是否以NULL结尾。

3.没有检查目标指针的空间是否大于等于原字符串的空间。

所以这些条件都需要调用者去完成。

看下面程序:

//拷贝字符串"abcd"

int nLen_Src = 0;

int nLen_Dest = 0;

char szTemp[] = "12345670";

char szSrc[] = {'a', 'b', 'c', 'd'}; //正确的用法是在加个'\\0'

char szDest[2]; //char szDest[5] = {0};栈中分配空间的最小

//边界是4字节,所以szDest数组的大小为1、2、

//3、4下面的结果都是一样的。

nLen_Src = strlen(szSrc);

nLen_Dest = strlen(szDest);

strcpy(szDest, szSrc);

结果是:nLen_Src = 14, nLen_Dest = 18;

szDest = "abcd12345670

文档

【使用strcpy的几点心得】

根据《出现频率最高的笔试题》cphj(原作),及众多的网友的观点。本人做了以下总结:大多数人都同意以下这个写法:只是个人风格有些不同而已。char*strcpy(char*dest,constchar*src){assert(NULL!=dest);assert(NULL!=src);char*tmp=dest;while('\\0'!=(*tmp++=*src++))//因为*tmp不是布尔值所以有必要比较;return(dest);}而根据MS中的定义如下:(%VC%/vc7/crt/sr
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top