字符串操作(strlen/strcpy/strcat/strcmp)
创始人
2024-06-02 12:45:20
0

目录

一、strlen函数---求长度

(一)函数介绍

(二)举例

(三) 模拟实现

1. 计数器 

2. 递归

二、strcpy函数---拷贝

(一) 函数介绍

(二)举例

(三)模拟实现

三、strcat函数---追加

(一)函数介绍 

(二) 举例

(三)模拟实现

四、strcmp函数---比较

(一)函数介绍 

(二)举例

(三)模拟实现


一、strlen函数---求长度

(一)函数介绍

  • 字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )
  • 参数指向的字符串必须要以 '\0' 结束

(二)举例

(三) 模拟实现

1. 计数器 

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include//strlen模拟实现
size_t Strlen(const char* str)
{assert(str);int count = 0;while (*str != '\0'){count++;str++;}return count;
}int main()
{char a[] = "abcdefg";int len = Strlen(a);printf("%d", len);return 0;
}

2. 递归

#define _CRT_SECURE_NO_WARNINGS 1
#include
#includesize_t Strlen(const char* str)
{assert(str);int count = 0;if (*str != 0){count = 1 + Strlen(str + 1);}elsereturn 0;
}int main()
{char a[] = "abcdefg";int len = Strlen(a);printf("%d", len);return 0;
}

二、strcpy函数---拷贝

(一) 函数介绍

 

 

  • 源字符串必须以 '\0' 结束。
  • 会将源字符串中的 '\0' 拷贝到目标空间。
  • 目标空间必须足够大,以确保能存放源字符串。
  • 目标空间必须可变

(二)举例

int main()
{char arr1[] = "abcdefg";char arr2[] = "hij";strcpy(arr1, arr2);printf("%s", arr1);return 0;
}

(三)模拟实现

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
char* Strcpy(char* dest, const char* src)
{char* ret = dest;assert(dest && src);while (*dest++ = *src++){;}return ret;
}int main()
{char arr1[] = "abcdefg";char arr2[] = "hijk";char* p = Strcpy(arr1, arr2);printf("%s", p);return 0;
}

三、strcat函数---追加

(一)函数介绍 

  • 源字符串必须以 '\0' 结束。
  • 目标空间必须有足够的大,能容纳下源字符串的内容。
  • 目标空间必须可修改

(二) 举例

 

(三)模拟实现

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
char* Strcat(char* dest, const char* src)
{char* ret = dest;assert(dest && src);while (*dest != '\0'){dest++;}while (*dest++ = *src++){;}return ret;
}
int main()
{char arr1[20] = "abcd ";char arr2[] = "ef";Strcat(arr1, arr2);printf("%s", arr1);return 0;
}

四、strcmp函数---比较

(一)函数介绍 

  • 第一个字符串大于第二个字符串,则返回大于0的数字
  • 第一个字符串等于第二个字符串,则返回0
  • 第一个字符串小于第二个字符串,则返回小于0的数字

(二)举例

 

(三)模拟实现

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
int Strcmp(const char* s1, const char* s2)
{assert(s1 && s2);while (*s1 == *s2){if (*s1 == '\0') //字符串全部比较完毕return 0;s1++;s2++;}return *s1 - *s2;
}
int main()
{char arr1[] = "abcd ";char arr2[] = "abf";int x = Strcmp(arr1, arr2);printf("%d", x);return 0;
}

相关内容

热门资讯

安卓手机系统怎么加速,安卓手机... 你有没有发现,你的安卓手机最近变得有点“慢吞吞”的?别急,别急,今天就来给你支几招,让你的安卓手机瞬...
小米note安卓7系统,探索性... 你有没有发现,手机更新换代的速度简直就像坐上了火箭呢?这不,小米Note这款手机,自从升级到了安卓7...
安卓和鸿蒙系统游戏,两大系统游... 你有没有发现,最近手机游戏界可是热闹非凡呢!安卓和鸿蒙系统两大巨头在游戏领域展开了一场激烈的较量。今...
安卓手机没有系统更,揭秘潜在风... 你有没有发现,现在安卓手机的品牌和型号真是五花八门,让人挑花了眼。不过,你知道吗?尽管市面上安卓手机...
充值宝带安卓系统,安卓系统下的... 你有没有发现,最近手机上的一款充值宝APP,在安卓系统上可是火得一塌糊涂呢!这不,今天就来给你好好扒...
安卓系统8.0镜像下载,轻松打... 你有没有想过,想要给你的安卓手机升级到最新的系统,却不知道从哪里下载那个神秘的安卓系统8.0镜像呢?...
安卓系统修改大全,全方位修改大... 你有没有想过,你的安卓手机其实是个大宝藏,里面藏着无数可以让你手机焕然一新的秘密?没错,今天就要来个...
安卓刷miui系统教程,安卓刷... 你有没有想过给你的安卓手机换换口味?别看它现在用得挺顺手的,偶尔来点新鲜感也是不错的。今天,就让我来...
超星学系统安卓版,便捷学习新体... 你有没有发现,学习生活越来越离不开电子设备了?手机、平板,这些小玩意儿简直就是我们的学习小助手。今天...
安卓平板6.0系统安装,轻松上... 你有没有想过,你的安卓平板6.0系统是不是该升级一下了呢?别看它现在看起来还挺精神的,但谁知道背后隐...
安卓系统屏幕显示文字,探索个性... 你有没有发现,手机屏幕上的文字有时候会变得模糊不清,或者颜色暗淡,让人看得很费劲?这可真是让人头疼的...
快递扫描系统下载安卓,便捷物流... 你有没有想过,每次快递员来送快递,他们是怎么快速找到你的包裹的呢?是不是觉得他们有超能力?其实,这背...
安卓系统能打开zip,操作指南... 你有没有想过,你的安卓手机里那些神秘的zip文件到底怎么打开呢?别急,今天就来给你揭秘这个小小的技术...
塞班怎么查找安卓系统,塞班系统... 你有没有想过,你的塞班手机里竟然也能装上安卓系统?听起来是不是有点神奇?别急,今天我就来手把手教你如...
安卓系统短消息提醒,安卓系统短... 你有没有发现,手机里的短消息提醒功能有时候就像一个贴心的管家,有时候又像个爱闹腾的小孩子?今天,咱们...
安卓系统如何跳过密码,安卓系统... 你是不是也和我一样,有时候手机锁屏密码设置得太复杂,每次解锁都要费好大一番力气?别急,今天就来教你怎...
鸿蒙系统功能与安卓,功能对比与... 你知道吗?最近手机圈里可是热闹非凡呢!华为的新操作系统鸿蒙系统(HarmonyOS)一经推出,就引发...
安卓系统卡苹果系统不卡,揭秘两... 你有没有发现,身边的朋友都在争论安卓系统和苹果系统哪个更好?其实,这个问题就像是在问谁家的孩子更聪明...
安卓系统卡解决了吗,安卓系统卡... 你有没有遇到过安卓手机卡顿的问题?是不是每次打开应用都感觉像蜗牛爬行?别急,今天就来聊聊这个让人头疼...
华为安卓系统下载软件,畅享海量... 你有没有想过,手机里的系统就像是我们的大脑,而下载的软件就像是大脑里的各种功能?今天,就让我带你一起...