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

来源:互联网 发布:大数据用户画像 编辑:程序博客网 时间:2024/05/17 21:05
一、字符串复制
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
}
原创粉丝点击