重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
编写程序,实现两个字符串拷贝的函数strcopy。
成都创新互联公司是网站建设技术企业,为成都企业提供专业的成都做网站、网站设计,网站设计,网站制作,网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制适合企业的网站。十余年品质,值得信赖!
要求:
不允许使用C的字符串函数strcpy。
主程序中从键盘输入两个字符串。调用strcopy函数实现字符串拷贝操作。
输出拷贝前后,两个字符串的内容。
首先是使用库函数
比如下面代码
void ourStrCopy(char S1[] , char S2[]){ strcpy(S1, S2); //该函数还有另一个版本可以按长度截取 }
还有一个函数是memcpy,这个是内存拷贝,原型是
void memcpy(void *dest, const void *src, size_t n); 需要注意的是这个函数第一个和第二个指针都是void型且第二个指针不能被修改,第三个参数是需要拷贝的内存长度按字节记。
然后是用指针引用,注意这个并非赋值,而是引用,这种操作需要注意内存。
char s1[] = "abcdefg";//定义一组字符串char *s2 = s1;//按照指针拷贝字符串
第三种方法就是直接赋值了
void outStrCopy(char s1[] , char s2[]){ int len1 = strlen(s1);//获取第一个字符串的长度 int len2 = strlen(s2);//获取第二个字符串的长度 int len = 0; //字符串总长度 if(len1 = len2){ len = len2; //选择COPY的长度 }else{ len = len1; } for(int i = 0 ; i len ; i++){ s1[i] = s2[i]; //实现数据拷贝 }}
位拷贝也叫浅拷贝。。。是编译器帮你自动生成的拷贝构造函数做的事情,它只能做一些基本的赋值操作,如果自己定义拷贝构造函数就要防止位拷贝。。因为位拷贝容易发生一些错误。。