#include "stdafx.h"
using namespace std;
/*
* 說明:字元串拷貝版本1
* 參數:dest目标位址,src源位址
* 傳回:傳回拷貝好的位址;如果出錯或者有重疊,無定義
* 異常:可能出現字元串溢出,及dest所占空間不如src所占空間大。
*/
char *strcpy_v1(char *dest , const char *src)
{
//調試時,使用斷言,入口檢測
assert( (dest!=NULL) && (src!=NULL) );
//注意這裡的記憶體指向參數dest所在的記憶體,不是棧記憶體,因而可以在函數中傳回
char *to = dest;
//主要操作在while條件中完成
while( (*dest++ = *src++)!='\0')
{
NULL;
}
//傳回拷貝字元串首位址,友善連綴,比如strlen(strcpy(dest,"hello"))
return to;
}
* 說明:字元串拷貝版本2
* 傳回:傳回拷貝好的位址;如果出錯,無定義
char *strcpy_v2(char *dest , const char *src)
char *d = dest;
char c;
while((c=*src++) != '\0')
*(dest++)=c;
*dest='\0';
return d;
* 說明:字元串拷貝版本2(你能找出錯誤的原因嗎)
char *strcpy_v2_error(char *dest , const char *src)
*(d++)=c;
*d='\0';
* 說明:字元串拷貝版本3
char *strcpy_v3(char *dest , const char *src)
while(*src)
*dest++ = *src++;
* 說明:字元串拷貝版本4
char *strcpy_v4(char *dest , const char *src)
while( (*dest = *src)!='\0')
src++;
dest++;
* 說明:字元串拷貝版本5
* 異常:可能出現字元串溢出,及dest所占空間不如src所占空間大。restrict關鍵字限定字元串不能重疊。
char *strcpy_v5(char* _restrict dest , const char* _restrict src)
* 說明:字元串拷貝版本6
char *strcpy_v6(char* _restrict dest , const char* _restrict src)
while(*dest++=*src++);
本文轉蓬萊仙羽51CTO部落格,原文連結:http://blog.51cto.com/dingxiaowei/1366256,如需轉載請自行聯系原作者