C语言------字符串函数(2)

简介: C语言------字符串函数(2)

1.strcat函数功能实现

char* mystrcat(char* dest, const char* src)
{
  assert(dest);
  assert(src);
  char* ret = dest;
  //找到目标空间里面的斜杠0的位置,再追加
  while (*dest != '\0')
  {
    dest++;
  }
  while ((*dest++ = *src++))
  {
    ;
  }
  return ret;
}
int main()
{
  char arr1[20] = "hello";
  char arr2[] = "world";
  mystrcat(arr1, arr2);
  printf("%s\n", arr1);
  return 0;
}

(1)这个函数的作用就是实现字符串的追加,把一个加到另外一个上面;

(2)这个函数的返回值是目标处的地址,因为这个过程指针在移动变化,所以我们在最开始的时

候就定义指针变量ret记录初始时候的位置,最后返回ret;

(3)第一个循环就是一直到找到斜杠0才停止;

第二个循环就是让指针后移,并且在移动的同时,实现对应位置的赋值;

(4)当移动到斜杠0的时候,就会因为斜杠0等于斜杠0的赋值,是的表达式的结果是0,循环结束;

(5)这个函数不能自己拼接自己,因为如果自己拼接的话,这种情况下2个指针指向的位置是相同

的,dest向右移动的时候,src也向右移动,但是src指针永远不会找到斜杠0进行终止循环,因为斜

杠0已经被覆盖掉了,超出范围以后会造成程序的崩溃;这里不能实现的主要症结就是2个指针指向

同一位置;

2.strcmp函数功能实现

(1)第一个字符串大,返回大于0的数;

(2)第二个字符串大,返回小于0的数;

(3)2个字符串相等,返回0;

#include<assert.h>
int my_strcmp(const char* str1, const char* str2)
{
  int ret = 0;
  assert(str1 != NULL);
  assert(str2 != NULL);
  while (*str1 == *str2)
  {
    if (*str1 == '\0')
      return 0;
    str1++;
    str2++;
  }
  return *str1 - *str2;
}
int main()
{
  char arr1[20] = "abcdef";
  char arr2[20] = "acdef";
  int ret = my_strcmp(arr1, arr2);
  printf("%d\n", ret);
  return 0;
}

这里返回指针相减,也就是相差字符的个数,是符合条件的。

目录
打赏
0
0
0
0
5
分享
相关文章
|
9天前
|
C语言中的字符、字符串及内存操作函数详细讲解
通过这些函数的正确使用,可以有效管理字符串和内存操作,它们是C语言编程中不可或缺的工具。
184 15
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
146 0
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
C语言常见字符函数和字符串函数精讲
C语言常见字符函数和字符串函数精讲
|
9月前
|
【C语言】模拟实现深入了解:字符串函数
【C语言】模拟实现深入了解:字符串函数
【C语言】字符串函数及其模拟实现
【C语言】字符串函数及其模拟实现
|
11月前
|
【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)
perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。
117 0
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
当然可以用scanf和printf输入输出,这里在之前【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)已经讲过了,这里就不再赘述,主要介绍只针对字符的函数.
107 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问