字符串拷贝函数



void Mystrcpy1(char *str1,char *str2)//不需要加长度int len
{
 int i;
 for(i=0;str2[i]!='\0';i++)//使用数组,利用数组输出函数中for循环
 {str1[i]=str2[i];}
 str1[i]='\0';
}
void Mystrcpy2(char *str1,char *str2)
{
 int i;
 for(i=0;*(str2+i)!='\0';i++)//把使用数组改为使用指针
 {*(str1+i)=*(str2+i);}
 *(str1+i)='\0';
}
void Mystrcpy3(char *str1,char *str2)
{
 while(*str2!='\0')
 {*str1=*str2;//解引用 
 str1++; 
 str2++;}
 *str1='\0';
}
void Mystrcpy4(char *str1,char *str2)
{
 while(*str2!='\0')
 {*str1++=*str2++;}//合3为1,后置++ 
 *str1='\0';
}
void Mystrcpy5(char *str1,char *str2)
{
 while(*str1++=*str2++)//先赋值,后加加,自带\0
 ;//空语句
}
分析:加加
 int i=10;
 int j=i++;//j=10;先赋值,后++
 
 赋值
 int a=10;
    if(a==100)//假
 if(a=100)//真
 {printf("真\n");}
  if(!0)对应真    即赋值时自带'\0'


//返回值:返回目标字符串的首地址,历史遗留问题
char *Mystrcpy(char *des,char *src)//des=src 目标,源头
{
 char *p=des;
 while(*des++=*src++)  ;//先赋值,后加加,自带'\0'
 return p;
}


int main()
{
 char str1[100]="abcd";
 char str2[100]="xyz";
 char str3[100];
 str3=str1;//复制  error
 //数组只能在初始化时整体赋值,之后就不可再赋值
 //如何进行字符串拷贝???

 首先可以使用库函数
#include<string.h>//库函数头文件
    strcpy(str3,str1);  调用库函数
    printf("%s\n",str3);


 Mystrcpy(str3,str1);
 printf("%s\n",str3);


 char str4[100];
 Mystrcpy(str3,str1);
 Mystrcpy(str4,str1);//可读性强
 //Mystrcpy(str4,Mystrcpy(str3,str1));//链式表达  高效
 printf("%s\n",str3);
 printf("%s\n",str4);
 return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值