模拟实现常用字符串函数

1、查找子字符串函数strstr的实现

char *  my_strstr(const char * dest, const char * src)//const保护字符串不被更改
{
	assert(dest);
	assert(src);     //断言
	char * ptr1 = NULL;
	char * ptr2 = src;
	while (*dest)
	{
		ptr1 = dest;//保留匹配成功后的位置指针
		src = ptr2;//保留匹配失败后,字串的同样指针
		while (*dest == *src)
		{
			dest++; src++;
			if (*src == ‘\0‘)
				return ptr1;//匹配成功,返回首地址
		}
		dest++;
	}
	return NULL;//匹配失败
}
优点:程序简单易懂
缺点:查找的效率比较低

2、模拟字符串复制函数strcpy的实现

char * my_strcpy(char * dest, const char * src)
{
	assert(dest);
	assert(src);//断言
	const char *ret = dest;//保留目标字符串的头指针

	while (*src)
	{
		*dest++ = *src++;//逐个复制
	}
	*dest = ‘\0‘;//将‘\0’复制

	return  ret;//返回目标字符串的首地址
}
缺点:复制时遇到‘\0‘就结束,而不能复制一些包含‘\0‘较多的字符串。
例如:char arr[10] = {0,0,0,0,0};

3、字符串长度计算函数strlen函数的3种实现

1)使用计数器
int my_strlen_count(const char * str)//计数器实现字符串长度计算函数
{
	assert(str);//断言
	int count = 0;
	while (*str)
	{
		count++;
		str++;
	}
	return count;//返回长度

}

2)利用指针相减
int my_strlen_ptr(const char * str)//利用指针相减实现字符串长度的计算
{
	assert(str);//断言
	const char * ret = str;

	while (*str++)
	{
		;
	}

	return (str - ret - 1);//返回长度
}

3)利用函数递归求取
int my_strlen_recu(const char * str)//利用递归计算字符串长度
{
	assert(str);//断言
	if (*str != ‘\0‘)
	{
		return (my_strlen_recu(str + 1) + 1);
	}
	else
		return 0;
}

4、字符串连接函数strcat的实现

char * my_strcat(char * dest, const char * src)//字符串连接函数
{
	assert(dest);
	assert(src);//断言
	char *ret = dest;//保留目标字符串的头指针
	while (*dest)
	{
		dest++;
	}//找到‘\0‘;

	while (*dest++ = *src++)//将src连接到dest
	{
		;
	}
	return ret;//返回目标字符串的首地址
}

5、字符串比较函数strcmp的实现

int my_strcmp(const char *str1, const char *str2)//字符串比较函数
{
	assert(str1);
	assert(str2);//断言

	while (*str1 == *str2)
	{
		str1++;str2++;
		if (‘\0‘ == *str1)
		{
			return 0;//相等
		}
	}
	return *str1 - *str2;//不等,返回不相等字符的ASCII码的差
}
时间: 2024-08-02 07:01:35

模拟实现常用字符串函数的相关文章

Delphi常用字符串函数

Delphi常用字符串函数 一.字符转换函数1.ord(input[i])返回字符表达式 input 左端起第 I 字符的ASCII 码值.2.CHAR()将ASCII 码转换为字符.如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL .3.LOWER()和UPPER()LOWER()将字符串全部转为小写:UPPER()将字符串全部转为大写.4.STR()把数值型数据转换为字符型数据.STR (<float_expression>[,length[, <dec

php 常用字符串函数总结

php里面自带的字符串函数,日期函数,数组函数等,有时候可以帮助我们解决很复杂的问题,运用起来也比较简单. 下面总结了一下常用的字符串函数. addcslashes — 为字符串里面的部分字符添加反斜线转义字符 addslashes — 用指定的方式对字符串里面的字符进行转义 bin2hex — 将二进制数据转换成十六进制表示 chop — rtrim() 的别名函数 chr — 返回一个字符的ASCII码 chunk_split — 按一定的字符长度将字符串分割成小块 convert_cyr_

常用字符串函数集合

随着计算机科学的发展和计算机应用的推广,对字符串的处理越来越成为计算机的一项重要能力.当然,在acm中也时常要用到.现在,我就来总结下在acm中必须掌握的字符串函数: 出现的顺序是按在acm中的使用频率来排的. 头文件:#include<string.h> / #include<cstring> ,分别为 C 和 C++中的头文件. 1.extern unsigned int strlen(char *s); ------>> 说明: 求字符串的长度,即字符串中字符的个

php常用字符串函数

1.查找字符位置函数 strpos($str,search,[int]):查找search在$str中的第一次位置从int开始: stripos($str,search,[int]):函数返回字符串在另一个字符串中第一次出现的位置.该函数对大小写不敏感 strrpos($str,search,[int]):查找search在$str中的最后一次出现的位置从int 2.提取子字符函数(双字节) submit($str,int start[,int length]):从$str中strat位置开始提

PHP常用字符串函数整理 v1.0

---恢复内容开始--- 1.操作字符串函数   //定义变量 $en='Hello World'; strlen() 获取字符串的长度(字节的长度) var_dump(strlen($en)); substr()字符串截取,从指定字符串的指定起始位置开始,截取指定长度的字符串 string substr(指定字符串,起始位置[,指定长度]):在PHP中字符串的起始位置为0 var_dump(substr($en,2[,3)]); 字符串访问某个元素:通过下标 var_dump($en[0]);

C语言学习笔记:19_数组-字符数组与字符串(常用字符串函数)

/* * 19_数组-字符数组与字符串.c * * Created on: 2015年7月7日 * Author: zhong */ #include <stdio.h> #include <stdlib.h> #include <string.h> /** *一:字符数组:就是存放字符的char[]数组 * 由于c语言中没有像java,C#中的String(字符串),只有存放字符 的字符型数组当字符串使用(java中的String类也是对字符数组进行封闭的). * *

c#.net常用字符串函数 字符创常用方法

Compare 比较字符串的内容,考虑文化背景(场所),确定某些字符是否相等 CompareOrdinal 与Compare一样,但不考虑文化背景 Format 格式化包含各种值的字符串和如何格式化每个值的说明符 IndexOf 定位字符串中第一次出现某个给定子字符串或字符的位置 IndexOfAny 定位字符串中第一次出现某个字符或一组字符的位置 LastIndexOf 与IndexOf一样,但定位最后一次出现的位置 LastIndexOfAny 与IndexOfAny,但定位最后一次出现的位

PHP常用字符串函数小结

一.判断类型的函数 is_bool() //判断是否为布尔型 is_float() //判断是否为浮点型 is_real() //同上 is_int() //判断是否为整型 is_integer() //同上 is_string() //判断是否为字符串 is_object() //判断是否为对象 is_array() //判断是否为数组 is_null() //判断是否为null is_file() //判断是否为文件 is_dir() //判断是否为目录 is_numeric() //判断是

c常用字符串函数

获取字符串长度 : size_t strlen(const char *str); 字符串拷贝函数: 把src中内容拷贝到dest中,它会覆盖原来的内容,它会把src中的\0,没有覆盖内容不变 如果scr中的长度超过了dest所能容纳的长度就可能导致程序崩溃 strcpy(char * dest, const char * src); len:表示要拷贝的字符串长度,不包含\0 strncpy(char * dest, const char *src, size_t len) 字符串拼接函数: