返回

从零开始:畅游C语言字符串模拟函数的奇妙世界

后端

一、常用字符串函数介绍

1. strlen

strlen函数的作用是计算字符串的长度,即字符串中字符的个数。字符串的长度不包括字符串末尾的空字符'\0'。

2. strcpy

strcpy函数的作用是将一个字符串复制到另一个字符串中。需要注意的是,strcpy函数不会对目标字符串进行扩容,因此目标字符串必须有足够的空间来容纳源字符串。否则,可能会导致缓冲区溢出。

3. strcmp

strcmp函数的作用是比较两个字符串的大小。如果两个字符串相等,则返回0;如果第一个字符串大于第二个字符串,则返回正数;如果第一个字符串小于第二个字符串,则返回负数。

4. strcat

strcat函数的作用是将两个字符串连接起来。连接后的字符串保存在第一个字符串中,第二个字符串的内容会被覆盖。

5. strstr

strstr函数的作用是在一个字符串中查找另一个字符串。如果找到子字符串,则返回子字符串的起始地址;如果没有找到子字符串,则返回NULL。

二、模拟实现常用字符串函数

1. strlen

size_t my_strlen(const char *str) {
  size_t len = 0;
  while (*str != '\0') {
    len++;
    str++;
  }
  return len;
}

2. strcpy

char *my_strcpy(char *dest, const char *src) {
  char *p = dest;
  while (*src != '\0') {
    *p++ = *src++;
  }
  *p = '\0';
  return dest;
}

3. strcmp

int my_strcmp(const char *str1, const char *str2) {
  while (*str1 != '\0' && *str2 != '\0') {
    if (*str1 > *str2) {
      return 1;
    } else if (*str1 < *str2) {
      return -1;
    }
    str1++;
    str2++;
  }
  if (*str1 == '\0' && *str2 == '\0') {
    return 0;
  } else if (*str1 == '\0') {
    return -1;
  } else {
    return 1;
  }
}

4. strcat

char *my_strcat(char *dest, const char *src) {
  char *p = dest;
  while (*p != '\0') {
    p++;
  }
  while (*src != '\0') {
    *p++ = *src++;
  }
  *p = '\0';
  return dest;
}

5. strstr

char *my_strstr(const char *str1, const char *str2) {
  size_t len1 = my_strlen(str1);
  size_t len2 = my_strlen(str2);
  if (len2 > len1) {
    return NULL;
  }
  for (int i = 0; i <= len1 - len2; i++) {
    if (my_strncmp(str1 + i, str2, len2) == 0) {
      return str1 + i;
    }
  }
  return NULL;
}

结语

通过这篇教程,我们一起探索了C语言字符串模拟函数的奥秘,并提供了清晰易懂的代码示例。希望这些知识能帮助您在未来的编程实践中游刃有余地处理字符串。当然,学习是一个循序渐进的过程,如果您在练习中遇到任何问题或有更多疑惑,请随时提出,我将竭诚为您解答。