学习笔记1-C++-strcat,strcpy函数

来源:互联网 发布:淘宝哎呦喂被挤爆了 编辑:程序博客网 时间:2024/05/29 08:28

strcpy函数

常见面试题目:
题目1 手写字符串复制函数
下面三个子函数,第一个跟标准strcpy函数应该是一样的。也就是正确答案。
//字符串复制函数#include<iostream>#include<assert.h>using namespace std;char *mystrcpy(char *s1, const char *s2)//就算s1长度小于s2也能全部复制{assert(s1 != NULL);assert(s2 != NULL);char *p = s1;while ((*s1++ = *s2++) != '\0');return p;}char *mystrcpy2(char *s1, const char *s2)//如果s1长度小于s2,会存在内存溢出{assert(s1 != NULL);assert(s2 != NULL);char *p = s1;while (*s2 != '\0'){*s1++ = *s2++;}return p;}char *mystrcpy3(char *s1, const char *s2)//如果s1长度小于s2,截出s1长度复制,多出抛弃{assert(s1 != NULL);assert(s2 != NULL);char *p = s1;while (*s1 != '\0'){*s1++ = *s2++;}return p;}int main(){char a[20]="abcdefjklmn";char d[20]="abcdefjklmn";char e[20]="abcdefjklmn";char h[20]="abcdefjklmn";char *b="ghi";char *f="opqrstuvwxyz";char g[5]="abc";char i[5]="abc";char j[5]="abc";char k[5]="abc";char *c=NULL;cout<<strcpy(a,b)<<endl;cout<<mystrcpy(d,b)<<endl;cout<<mystrcpy3(h,b)<<endl;cout<<mystrcpy2(e,b)<<endl;//如果s1长度大于s2,保留s1多余部分cout<<mystrcpy3(g,f)<<endl;//如果s1长度小于s2,截出s1长度复制cout<<mystrcpy(i,f)<<endl;cout<<strcpy(j,f)<<endl;cout<<mystrcpy2(k,f)<<endl;//如果s1长度小于s2,结果出错//cout<<mystrcpy(a,c)<<endl;return 0;}
题目2 手写字符串拼接函数
#include<iostream>#include<assert.h>using namespace std;char *mystrcat(char *s1,const char *s2){assert(s1!=NULL);assert(s2!=NULL);char *p=s1;while(*s1!='\0')s1++;while((*s1++=*s2++)!='\0');return p;}int main(){char a[20]="abcdef";char c[20]="abcdef";char *b="ghijklmnopqrs";//注意a+b之后的长度不能大于20,否则数组越界cout<<strcat(a,b)<<endl;cout<<mystrcat(c,b)<<endl;return 0;}


阅读全文
0 0
原创粉丝点击