strlen思路

循环遍历数组(字符串),直至第i位等于尾零'\0',循环结束;定义一个变量 在循环内自加

strcat思路

循环遍历第一个字符串,找到末尾,'\0'的位置,然后将第二个字符串,从头开始往第一个字符串里复制

strcpy思路

注意:该操作与第一个字符串无关,只需要第一个字符串足够,否则会造成越界,导致程序奔溃
从头开始 循环遍历第二个,复制到第一个里

strcmp思路

按位比较,如果相同,下一个,如果不同,返回差值

#include <stdio.h>
//字符串长度
int my_strlen(char *p)
{int i = 0 ;int num = 0;for(i=0;p[i]!= '\0';i++){num++;}return num;}
//字符串拼接
void my_strcat(char *p1,char *p2)
{int i = 0;int j = 0;while(p1[i]!='\0'){i++; }//第i个 就是 ‘\0’for(j=0;p2[j]!='\0';j++){p1[i] = p2[j];    i++;}return;
}
//字符串复制
void my_strcpy(char *p1,char *p2)
{int i = 0;for(i=0;p2[i] != '\0';i++){p1[i] = p2[i];    }p1[i] = '\0';
}
//字符串比较
int my_strcmp(char *p1,char *p2)
{int i = 0;int num = 0;for(i=0;(p1[i]!='\0')||(p2[i]!='\0');i++){num = p1[i] - p2[i];if(num == 0){   //printf(); 查看是不是一位一位比较的,测试用,无实质意义     printf("%d\n",i);}else{return num;    }       }}int main()
{while(1){printf("\n请输入要进行的操作>>\n1.求字符串长度\n2.字符串拼接\n3.字符串复制\n4.字符串比较 \n 0.退出\n");int n = 0 ;scanf("%d",&n);if(n == 0){printf("系统退出\n");return 0; }else if(n == 1){//调用字符串长度printf("input 字符串>>");char arr[128] = {0};//定义一个空字符串scanf("%s",arr);//输入int num = my_strlen(arr);//获取返回值printf("该字符串的长度是 %d\n",num);}else if(n == 2){//调用字符串拼接//由于是用scanf接收的字符串,空格相当于分割符这一类的,所以头 尾的空格会被吃掉,,//可以改成 gets 接收(gets 编译会报警告)printf("请输入地一个字符串>>");char arr1[128] = {0};char arr2[128] = {0};int i = 0;     scanf("%s",arr1); //gets(arr1);printf("请输入第二个字符串>>");scanf("%s",arr2);  //gets(arr2);my_strcat(arr1,arr2);printf("拼接后的 字符串1 是 %s\n",arr1);}else if(n == 3){//调用字符串复制int i = 0;char arr1[128] = {0};char arr2[128] = {0};printf("请输入要写入字符串2的数据>>");scanf("%s",arr2);printf("原来的 arr1 == %s\n",arr1);printf("原来的 arr2 == %s\n",arr2);my_strcpy(arr1,arr2);printf("--------------分割对比------------------\n");printf("复制完的 字符串1 是 %s\n",arr1);printf("复制完的 字符串2 是 %s\n",arr2);}else if(n == 4){//调用字符串比较char arr1[128] = {0};char arr2[128] = {0};printf("请输入要比较的字符串1 >>");scanf("%s",arr1);printf("请输入要比较的字符串2 >>");scanf("%s",arr2);int ret = my_strcmp(arr1,arr2);if(ret == 0){printf("arr1 等于 arr2\n");  }else if(ret > 0){printf("arr1 大于 arr2\n");    }else if(ret < 0){printf("arr1 小于 arr2\n");    } }else{//于之对应的是 最开始的 ifprintf("瞎写!!\n"); return 0;}}return 0;
}

还不完善,没有校验,传输的参数是否有空的,细节还没有补全,不简洁

希望各位指正错误!

用子函数实现strlen.strcpy.strcat.strcmp(完整代码)相关推荐

  1. c语言strcpy两字符串长度不同,(C语言)自己写字符串操作函数(一)——strlen/strcpy/strcat/strcmp/st...

    看到很多面试都会要求你写一些简单的字符串操作函数,这些函数看起来挺简单的,但是自己写的时候就会发现不少的问题.所以我自己把大部分的字符串操作函数都写了一遍,然后用了个测试程序来测试自己写的函数与库函数 ...

  2. 缓存区的输入输出,字符串常用操作,实现strlen/strcpy/strcat/strcmp函数)

    输出缓冲区: 程序输入的数据并不能立即显示在屏幕上,而是先存储在输出缓冲区中,满足一些条件后才显示出来. 1.遇到\n后 2.遇到输入语句 3.当输出缓冲区满4K 4.当程序结束 5.手动刷新 ffl ...

  3. strlen,strcpy,strcat,strcmp函数

    1.strlen函数 strlen函数的作用是计算给定字符串的长度,从内存的某个位置开始,遇到第一个'\0'结束. 使用样例: int main() {const char *ar = "a ...

  4. 《C语言杂记》理解字符串处理函数 strlen() strcpy() strcat() strcmp()

    在linux C 编程中,我们经常遇到字符串的处理,最多的就是字符串的长度.拷贝字符串.比较字符串等:当然现在的C库中为我们提供了很多字符串处理函数.熟练的运用这些函数,可以减少编程工作量,这里介绍几 ...

  5. C语言strlen,strcpy ,strcat, strcmp,strstr常用库函数的理解与模拟实现

    前言 本篇文章主要学习一下常见的库函数和模拟实现这些库函数,这篇文章可以加深我们对这些函数的理解. 一.strlen 这个函数是用来求字符串长度的,实现逻辑是: '\0' 作为字符串的结束标志,str ...

  6. 字符串处理函数(strcpy strcat strcmp strlen)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.字符串复制函数 strcpy 二.字符串连接函数 strcat 三.字符串比较函数strcmp 四..求字符串长度 ...

  7. C++字符串操作函数strstr,strcmp,strlen,strcpy,strcat,strok

    C++中字符串操作函数非常常见,下面是一些常用的str相关操作函数: strstr strstr: 在字符串中查找子字符串 C++ const char* strstr(const char* str ...

  8. 自定义字符串函数:strlen,strcat,strcpy,strcmp

    版权声明:本文为博主原创文章,未经博主允许不得转载. 计算字符串长度函数strlen: int mystrlen(char *s) {int count = 0;char *p = s;if (!p) ...

  9. C/C++中strlen(),strcpy(),strcat()以及strcmp()的代码实现--学习笔记

    以下代码是自己学习过程中通过借鉴加上自己的理解编写出的代码已经在VC++2008版本上调试通过,主函数因为很简单所以没有附上. 1. strlen() int my_strlen(char *str) ...

最新文章

  1. SOLO: 按位置分割对象
  2. 如何用 Slack 和 Kubernetes 构建一个聊天机器人?| 附代码
  3. 【面试】我是如何在面试别人Spring事务时“套路”对方的
  4. 耕牛传媒关于诈骗,拖延工期等负面信息特别申明
  5. android tween动画效果
  6. beautifulsoup_Python爬虫-BeautifulSoup
  7. 第一章-从双向链表学习设计
  8. warpaffine 旋转有一部分消失_如果月球消失了,会发生什么?我们的世界又将会变得怎么样?...
  9. 【树形dp】VK Cup 2012 Round 1 D. Distance in Tree
  10. Navicat for MySQL再谈之无奈之下还是去安装Navicat Premium
  11. oracle 基数 选择率,1.1.2.2 可选择率(1)
  12. 详解Unity中的射线与射线检测
  13. Edge浏览器配置教程
  14. arm汇编—bic ,orr
  15. pygame学习笔记——飞机大战爆炸效果
  16. pytorch训练GAN的代码(基于MNIST数据集)
  17. Endnote Reference styles参考文献引用模版制作——附毕设大论文引用模版
  18. 自学Web前端的第14天
  19. Mac 外接键盘Command键( Windows 徽标键)失效
  20. AI入门基础工具(一)

热门文章

  1. C#后台调用oracle存储过程,参数传入的是clob字段,怎样处理
  2. IBM软件三大发力点推进“软”实力着陆中国
  3. PlaceHolder和Panel的区别【搜藏】
  4. byobu_如何使用byobu多路SSH会话
  5. drupal显示图片_Drupal在多样性和包容性方面显示领导力
  6. cassandra 数据量_Cassandra和Spark的数据处理简介
  7. Bootstrap翻页组件
  8. php如何做水仙花数,使用PHP实现水仙花数及各种特殊有趣数的输出
  9. 电竞高性能主机可以改云服务器吗,无缘主机平台 NBA 2K League电竞联赛将改用高性能PC...
  10. 浏览器安全检查己通过_Edge浏览器(Chromium)——从XSS到接管网页