C语言练习6---字符串函数实现
1.strlen
法一:常规法
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define N 100int my_strlen(const char*str)
{assert(str != NULL);int count = 0;while (*str != '\0'){str++;count++;}return count;
}
int main()
{char str[N] = "LoveHoneyYou";int len=my_strlen(str);printf("%d\n", len);system("pause");return 0;
}
法二: 指针相减
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define N 100int my_strlen(const char*str)
{assert(str != NULL);char *cp = str;while (*cp != '\0'){cp++;}return (int)(cp-str);
}
int main()
{char str[N] = "LoveHoneyYou";int len=my_strlen(str);printf("%d\n", len);system("pause");return 0;
}
2.strcpy
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define N 100void my_strcpy(char *dest, char *src)
{while (*src != '\0'){*dest++ = *src++;}*dest = *src;
}int main()
{char stra[N] = "LoveHoneyYou";char strb[N] = "Love dearest you";my_strcpy(stra, strb);printf(stra);printf("\n");system("pause");return 0;
}
3.strcat
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define N 100void my_strcat(char *dest, char *src)
{char*cp = dest;while (*cp!= '\0'){cp++;}while (*src!='\0'){*cp++ = *src++;}*cp = *src;
}int main()
{char stra[N] = "Love Honey You ";char strb[N] = "My dear friend";my_strcat(stra, strb);printf(stra);printf("\n");system("pause");return 0;
}
4.strcmp
#include <stdio.h>
#include <stdlib.h>
#define N 100
int my_strcmp(char *dest, char *src)
{while (*dest != '\0' || *src != '\0'){if (*dest == *src){dest++;src++;}else if (*dest < *src){return -1;}else{return 1;}}return 0;
}
int main()
{char stra[N] = "I Love You ";char strb[N] = "You Love Me ";int ret = my_strcmp(stra, strb);printf("ret=%d\n", ret);system("pause");return 0;
}
5.strchr //字符的首次出现
#include <stdio.h>
#include <stdlib.h>
#define N 100
char* my_strchr(char *str, char ch)
{while (*str != '\0'){if (*str == ch){break;}str++;}return str;
}
int main()
{char stra[N] = "I Love You ";char*ch = my_strchr(stra, 'Y');printf("%c \n", *ch);system("pause");return 0;
}
6.strrchr //字符最后一次出现
#include <stdio.h>
#include <stdlib.h>
#define N 100
char* my_strrchr(char *str, char ch)
{char*cp = str;while (*cp != '\0'){cp++;}cp = cp - 1;while (cp != str - 1){if (*cp == ch){return cp;}cp--;}return NULL;
}
int main()
{char stra[N] = "I Love You ";char*ch = my_strrchr(stra, '0');system("pause");return 0;
}
7.strstr //查找字串 (爸爸找儿子)
(1) 使用三个变量
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100void my_strstr(char* father, char *son)
{int len_Fa = strlen(father); //父串长度int len_So = strlen(son); //字串长度int tmp = 0;for (int i = 0; i < len_Fa - len_So+1; i++){int sign = i;for (int j = 0; j < len_So; j++){if (father[sign] != son[j]){break;}tmp = j;sign++;}if (tmp == len_So - 1){printf("找到了,是爸爸的好儿子\n");break;}if (i == len_Fa - len_So + 1-1){printf("找不到,不是爸爸的好儿子\n");}}
}int main()
{char arr[N] = "ddsadabsdasd";char brr[N] = "abs";my_strstr(arr, brr);system("pause");return 0;
}
(2)不使用第三个变量
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100void my_strstr(char* father, char *son)
{int len_Fa = strlen(father); //父串长度int len_So = strlen(son); //字串长度int tmp = 0;for (int i = 0; i < len_Fa - len_So+1; i++){for (int j = 0; j < len_So; j++){if (father[i+j] != son[j]){break;}tmp = j;}if (tmp == len_So - 1){printf("找到了,是爸爸的好儿子\n");break;}if (i == len_Fa - len_So + 1-1){printf("找不到,不是爸爸的好儿子\n");}}
}int main()
{char arr[N] = "ddsadabsdasdsfhsdkjfhkdshfh";char brr[N] = "fhsdk";my_strstr(arr, brr);system("pause");return 0;
}
C语言练习6---字符串函数实现相关推荐
- C语言常用的字符串函数
C语言常用的字符串函数 以下函数都在头文件 string.h 中 (1)strcpy()字符串复制函数 函数原型:char *strcpy(char *d ,char *s) 功能:复制字符串s到字符 ...
- C语言试题六十二之请编写函数fun除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串第一个字母,形参p已指向字符串中最后一个字母。在编写程序时,不得使用c语言提供的字符串函数。
1. 题目 请编写函数fun除了字符串前导和尾部的*号之外,将串中其他*号全部删除.形参h已指向字符串第一个字母,形参p已指向字符串中最后一个字母.在编写程序时,不得使用c语言提供的字符串函数. 比如 ...
- C语言试题五十七之假定输入的字符串中只包含字母和*号。请编写函数function,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。
1. 题目 假定输入的字符串中只包含字母和*号.请编写函数function,它的功能是:删除字符串中所有*号.在编写函数时,不得使用c语言提供的字符串函数. 2 .温馨提示 C语言试题汇总里可用于计算 ...
- 87.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。
87.假定输入的字符串中只包含字母和号.请编写函数fun,它的功能是:除了字符串前导的号之外,将串中其他*号全部删除.在编写函数时,不得使用C语言提供的字符串函数. 例如,若字符串中的内容为****A ...
- 66.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。
66.假定输入的字符串中只包含字母和号.请编写函数fun,它的功能是:删除字符串中所有的号.在编写函数时,不得使用C语言提供的字符串函数. 例如,若字符串中的内容为****A*BC*DEFG***** ...
- c语言中存储字符用什么函数,那些C语言中你不知道的字符串函数(坑)
1.strcpy() 在字符串拷贝函数中,它的函数编写不难,如下 char* Strcpy(char* dest, const char* src) { assert(dest != NULL &am ...
- java实现c语言的函数_C语言实现返回字符串函数的四种方法
前言 C语言返回字符串函数共有四种方式,分别如下: 使用堆空间,返回申请的堆地址,注意释放 函数参数传递指针,返回该指针 返回函数内定义的静态变量(共享) 返回全局变量 下面来看看详细的介绍 其实就是 ...
- C语言进阶 之 字符串函数(4)
C语言中对字符和字符串的处理是很频繁,但是C 语言本身是没有字符串类型的,字符串通常放在 常量字符串 中 或者 字符数组中.字符串常量 适用于那些对它不做修改的字符串函数. 函数介绍 strlen s ...
- 【C语言进阶】字符串函数模拟实现
求字符串长度 strlen size_t strlen(const char*string); 头文件:<string.h> 功能: 计算字符串的长度,遇到'\0'便停止,统计'\0'之前 ...
- oc语言常用的字符串函数
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {@autoreleasepool {/* ...
最新文章
- Protractor测试环境搭建
- android程序贴吧,【Android 教程总结贴】归纳所有android贴
- css定位页面元素,页面元素定位-CSS元素基本定位
- 【AI-1000问】机器学习和模式识别是什么关系?
- birt脚本for循环语句_Python初级教程(11): for循环语句
- 尝鲜体验 VS Code Python 原生 Jupyter Notebook 支持
- ScrollView嵌套ViewPager,ViewPage动态设置高度,嵌套事件冲突——滑动冲突解决方法
- STM32之通用定时器编码器模式
- UI设计灵感|高级黑网页首图就该这样设计
- js foreach用法_36 个JS 面试题为你助力金九银十(面试必读)
- Tuxedo中间件常用命令
- 制作 jvm 火焰图
- 英伟达显卡虚拟化vGPU实践指南
- visa支付—Springboot
- cc2530:<3>ADC采集光照度案例
- 解决Office安装错误代码1024:安装程序无法打开注册表项UNKNOWN\Components\
- 深度学习基础-损失函数详解
- deepin网速慢 自己摸索 已解决
- 百度名词~杂篇--(对日常遇到事物的深入了解)
- js数组遍历常用方法 0802二
热门文章
- 数学和物理成绩不突出可以学计算机吗,高考数学成绩差,这8个专业不建议报考,学起来会很吃力...
- JavaScript 霸榜!TensorFlow火热!GitHub 2017 年度报告,你擅长的技术快被淘汰了!
- Windows10创建局域网无密码的文件共享
- 搭建FPGA SOC系统(3)编译u-boot
- Android 开发之旅:短信的收发及在android模拟器之间实践(一)
- 提案探索(1):Improvements for HEVC rate controlRate Control for VVC
- Flask 入门整理笔记
- 防火墙导致电脑不能相互访问
- 善用 Web 调试代理工具
- 使用简易网络实现二分类