strcpy函数
2024-10-18 22:37:02
不调用C/C++库函数,编写strcpy()函数。
char * my_strcpy(char *strDest,const char *strSrc)
{
char *p=strDest;
while(*strSrc)
{
*strDest++=*strSrc++;
}
*strDest='\0';
return p;
}
虽然这个函数很容易写出来,但是在调用 my_strcpy时,常常由于内存问题,执行时报错。error1,error2,error3都是被犯过的错误。
#include<iostream>
using namespace std;
char * my_strcpy(char *strDest,const char *strSrc);
void Display(char *p);
void error1();
void error2();
void error3();
void correct1();
void correct2();
void correct3();
int main(void)
{
correct1();
correct2();
correct3();
getchar();
}
char * my_strcpy(char *strDest,const char *strSrc)
{
char *p=strDest;
while(*strSrc)
{
*strDest++=*strSrc++;
}
*strDest='\0';
return p;
}
void Display(char *p)
{
while(*p)
{
cout<<*p++;
}
cout<<endl;
}
void error1()
{
char *src="I Love China";
//这里的dest仅仅只是一个指针,没有分配内存,运行时报错。
char *dest;
my_strcpy(dest,src);
Display(dest);
}
void error2()
{
char *src="I Love China";
//还是运行报错,还是没有给dest分配内存,仅仅只是dest指针指向一个常量
char *dest="I Love Shanghai";
my_strcpy(dest,src);
Display(dest);
}
void error3()
{
char src[]="";
char dest[]=""; /*dest[]数组不够长,数组越界*/
my_strcpy(dest,src);
Display(dest);
}
void correct1()
{
char *src="I Love China";
//使用 new 进行动态内存分配,strlen测得的长度不包括‘\0’
char *dest=new char[strlen(src)+];
my_strcpy(dest,src);
Display(dest);
delete(dest);
}
void correct2()
{
char *src="I Love China";
char *dest="I Love Shanghai";
//使用malloc 为dest分配内存
dest=(char*)malloc(strlen(src)*sizeof(char)+);
my_strcpy(dest,src);
Display(dest);
free(dest);
}
void correct3()
{
char src[]="";
char dest[]="";
my_strcpy(dest,src);
Display(dest);
}
最新文章
- java中使用队列:java.util.Queue (转)
- MapReducer程序调试技巧
- Nodejs新建博客练习(二)添加flash支持
- 细说webpack之流程篇
- Python实战:Python爬虫学习教程,获取电影排行榜
- 初识Jmeter(一)
- 201521123059 《Java程序设计》第十三周学习总结
- FormsAuthentication 票据前后台登录导致掉线
- bootstrap开发微票儿网站首页
- EZ 2018 05 20 NOIP2018 模拟赛(十五)
- Socket网络编程--网络爬虫(4)
- 文件IO-Linux
- Servlet --简单用户留言系统
- Android无法访问本地服务器(localhost/127.0.0.1)的解决方案
- overflow属性-摘自网友
- asp.net 中长尾链接实现推送 -- comet
- java 和 javascript CryptoJS 进行HmacSHA1加密
- ==和equals区别
- springboot 整合 elasticsearch
- JSP页面的生命周期