字符串复制、测字符串的有效长度

一、字符串复制
1.
void Mystrcpy1(char *des,char *src)//1
 {
  int i;
  for(i=0;src[i]!='\0';i++)//1
  {
   des[i] = src[i];//*(des+i) = *(src+i);
 }
 des[i] = '\0';
}
void Mystrcpy2(char *des,char *src)
{
 while(*src != '\0')//2
 {
  *des = *src;
  src++;
  des++;
 }
 *des = '\0';
}
void Mystrcpy3(char *des,char *src)
{
 int i;
 for(i=0; *(src+i)!='\0';i++)
 {
  *(des+i) = *(src+i);
 }
 *(des+i) = '\0';
}
void Mystrcpy4(char *des,char *src)
{
 while(*des++ = *src++) ;//
}
void Mystrcpy5(char *des,char *src)
{
 //参数检查,健壮性(鲁棒性)
 assert(des!=NULL && src!=NULL);//assert 
 if(des==NULL || src==NULL)
 {
  return ;//exit退出整个程序
 }
 while(*des++ = *src++) ;
}
char *Mystrcpy6(char *des,char *src)            
{
 char *p = des;     //p保存了des(这是个数组)的首地址
 assert(des!=NULL && src!=NULL);
 if(des==NULL || src==NULL)
 {
  return NULL;
 }
 while(*des++ = *src++) ;
 return p;
}
int main()
{
    char *src = "123";
    char des[20];//src不可改变,des是src拷进的,所以值发生变化,不能用char *des
    Mystrcpy(des,src);
    return 0;
}

char *Mystrcpy(char *des,const char *src)
{
 assert(des!=NULL && src!=NULL);
 int i;
 for(i=0;src[i]!='\0';i++)
 {
  des[i] = src[i];
  //src[i] = '\0';
 }
 des[i] = '\0';
 return des;
}
二、测字符串的有效长度
1.
 return i;int Mystrlen(const char *str)
{
 assert(str != NULL);
 int i = 0;
 while(*str!='\0')
 {
  i++;
  str++;
 }
 /*for(i=0;str[i]!='\0';i++)
 {
  ;
 }*/
}
 }
int main()
 {
    printf("%d\n",Mystrlen("abcd"));
    return 0;
 }
2.sizeof与strlen
int main()
 {
  char str1[100] = "abcde";
  char str2[] = "abcde";
  char str3[100] = "abcdef\0ijk\n";
  char str4[] = "abcdef\0ijk\n";
  char *str5 = "abcde";//char * str5[6];
  char *str6 = "abcdef\0ijk\n";
  printf("%d,%d\n",sizeof(str1),strlen(str1));//100,5
  printf("%d,%d\n",sizeof(str2),strlen(str2));//6,5
  printf("%d,%d\n",sizeof(str3),strlen(str3));//100,6
  printf("%d,%d\n",sizeof(str4),strlen(str4));//12,6;
  printf("%d,%d\n",sizeof(str5),strlen(str5));//4,5
  printf("%d,%d\n",sizeof(str6),strlen(str6));//4,6
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@所谓伊人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值