一、strcpy()函数概述

在C语言函数中:

原型声明:char *strcpy(char* dest, const char *src);
头文件:#include和#include
定义函数:char *strcpy(char *dest, const char *src);
函数说明:strcpy()会将参数src 字符串拷贝至参数dest 所指的地址。
返回值:返回参数dest 的字符串起始地址。
附加说明:如果参数 dest 所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况,在编写程序时请特别留意,或者用strncpy()来取代。

二、strcpy()函数原型

//C语言标准库函数strcpy的一种典型的工业级的最简实现。
//返回值:目标串的地址。
//对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
//参数:des为目标字符串,source为原字符串。
char* strcpy(char* des,const char* source)
{
char* r=des;
assert((des != NULL) && (source != NULL));
while((*r++ = *source++)!='\0');
return des;
}
//while((*des++=*source++));的解释:赋值表达式返回左操作数,所以在赋值'\0'后,循环停止。
----------------------------------------------------------------------------------------------
三、strcpy()函数实例

实例1:将一个字符串拷贝到一个足够长的字符数组中。本例中字符数组为a,长度为20。

//缺点:若数组长度不足以容纳整个字符串,则程序运行崩溃。

/* 备注:编译工具Visual studio 2013 */

#include "stdafx.h"
#include
#include
using namespace std;
char * strcpy(char * strDest, const char * strSrc)
{
char * strDestCopy = strDest;
if ((NULL == strDest) || (NULL == strSrc))
throw "Invalid argument";
while ((*strDest++ = *strSrc++) != '\0');
return strDestCopy;
}
int main(int argc, char * argv[])
{
char a[20], c[] = "I am student.";
try
{
strcpy(a, c);
}
catch (char* strInfo)
{
cout