字符串的复制、连接和比较大小

字符串的复制

void Mystrcpy1(char *des,char *src)
{
  int i;
  for(i = 0;*(src + i)!='\0';i++)
  {
    *(des + i) = *(src + i);
  }
  *(des + i) = '\0';
}

或者

void Mystrcpy2(char *des,char *src)
{
  while(*des ++ = *src ++);
}
int main()
{
  char str1[] = "abcde";
  char str2[10];
  Mystrcpy2(str2,str1);
  printf("str2 = %s\n",str2);
  return 0;
}

字符串的连接:

“abcde”,"xyz"——>"abcdexyz"

char *Mystrcat(char *des,char *src)
{
  assert(des != NULL&& src != NULL);//断言assert(限制条件) 报告错误
  char *p = des;
  while( *des != '\0')//找到des最后一个字符
{
   des ++;
}
  while(*des++ = *src++);//将src中的字符复制到des中
  return p;
}
int main()
{
  char str1[10] = "abcde";
  char str2[] = "xyz";
  Mystrcat(str1,str2);
  printf("%s\n",str1);
  return 0;
}

在主函数中定义str时一定要定义成字符数组而不能定义成字符串常量,否则程序容易崩溃

字符的比较:

int Mystrcmp(const char *str1,const char *str2)
{
  assert(str1 != NULL&&str2 != NULL);
  int gap;
  while(((gap = *str1 - *str2) == 0)&&(*str1 != '\0'))
{
   str1 ++;
   str2 ++;
}
  return gap;
}
int main()
{
  printf("%d\n",Mystrcmp("abcd","abx"));
  printf("%d\n",Mystrcmp("abcd","x"));
  printf("%d\n",Mystrcmp("ab","abx"));
  printf("%d\n",Mystrcmp("x","abx"));
  printf("%d\n",Mystrcmp("abcd","abcd"));
  return 0;
}

猜你喜欢

转载自blog.csdn.net/oyhuahua/article/details/81103034
今日推荐