有关字符串的问题

来源:互联网 发布:方维生鲜o2o源码 编辑:程序博客网 时间:2024/05/17 08:49

//求字符串的长度
int Mystrlen(const char *str)
{
 int i;
 for (i=0; str[i]!='\0'; i++)
 {;}
 return i;
}

//字符串拷贝函数,这里给出了4种方法
方法1:
void Mystrcpy1(char *des, const char *src)
{
 int i = 0;
 while (src[i] != '\0')                      //    for (i=0; src[i]!='\0'; i++)
 {                                                   //    {
  des[i] = src[i];                             //       des[i] = src[i];
  i++;                                            //     }
 }                                                  //
 des[i] = '\0';
}
方法2:
void Mystrcpy2(char *des, const char *src)
{
 int i = 0;
 for ( ; *(src+i)!='\0'; i++)
 {
  *(des + i) = *(src + i);
 }
 *(des+i) = '\0';
}
方法3:
void Mystrcpy3(char *des, const char *src)
{
 while (*src != '\0')
 {
  *des = *src;                     //这三个语句可以写成:
  des ++;                            //*(des ++) = *(src ++);
  src ++;                            //
 }
 *des = '\0';
}
方法4:
void Mystrcpy4(char *des, const char *src)
{
 while (*des++ = *src++);
}

//字符串的连接
char *Mystrcat(char *des, const char *src)
{
 while (*des != '\0')
 {
  des ++;
 }
 while (*(des++) = *(src++));
 return des;
}

//字符串的比较
int Mystrcmp(const char *str1, const char *str2)
{
 int tmp;
 assert(str1!=NULL && str2!=NULL);
 while ((tmp = *str1 - *str2) == 0 && *str1!= '\0')
 {
  str1 ++;
  str2 ++;
 }
 return tmp;
}



1 0