模拟实现库函数strlen、strcpy、strcmp、strcat

模拟实现strlen

int my_strlen(const char*arr)
{
// asssert(arr!=NULL);
 int count = 0;
 while (*arr != '\0')
 {
  count++;
  arr++;
 }
 return(count);
}
int main()
{
 char arr[] = "abcdftg";
 int count = my_strlen(arr);
 printf("%d\n", count);
 return 0;
}

模拟实现strcpy

//模拟实现strcpy
//把source字符串拷贝到目的地,都包含空字符,结束标志,并且目的地数组大小足够大
char* my_strcpy(char*arr2, const char*arr1)
{
// assert(arr1&&arr2);
 char*ret = arr2;
 while (*arr2++ =*arr1++)
 {
  ;
 }
 return (ret);
}
int main()
{
 char arr1[10] = "adncfk";
 char arr2[20] = "akdncjfkd";
 char*ret = my_strcpy(arr2, arr1);
 printf("%s\n", arr2);
 return 0;
}

模拟实现strcmp

//模拟实现strcmp
//两个字符串比较
int my_strcmp(const char* arr1, const char* arr2)
{
 while (*arr1==*arr2)
 {
  arr1++;
  arr2++;
 }
 //直到字符不同或到达终止的空字符为止。
 return (*arr1 - *arr2);
}
int main()
{
 char arr1[10] = "abce";
 char arr2[10] = "abcd";
 int cmp = my_strcmp(arr1, arr2);/
 printf("%d\n", cmp);
 return 0;
}

模拟实现strcat

//模拟实现strcat
char* my_strcat(char*dest, const char*src)
{
 char*ret = dest;
 //找到‘\0’
 while (*dest!='\0')
 {
  dest++;
 }
 //追加
 while (*dest++ = *src++)
 {
  ;
 }
 return(ret);
}
int main()
{
 char str1[] = "advfg";
 char str2[] = "sfg";
 my_strcat(str1, str2);
 printf("%s\n", str1);
 return 0;
}
发布了2 篇原创文章 · 获赞 1 · 访问量 24

猜你喜欢

转载自blog.csdn.net/shuangweiyebai/article/details/105601361