我是靠谱客的博主 甜蜜云朵,最近开发中收集的这篇文章主要介绍C语言:模拟实现strlen、strcpy、strcmp、strReverse、strcat函数,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
环境: Windows8,Visual Studio 2013
语言: C语言
什么是C语言里的字符串?
字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
C语言中认为以字符形式保存,以‘ ’结尾的串为字符串。
字符的ASCII编码表
(图片来源:百度百科)
字符串函数(皆为模拟string.h文件中常用的函数)
1.字符串连接
char *mystrcat(char* des,const char* str)
{
assert(des);
assert(str);
char *p = des;
while (*p)
{
p++;
}
while (*p++ = *str++)
{
;
}
return des;
}
2.字符串比较
//str1大返回1,两者相同返回0,str2大返回-1
int mystrcmp (const char * src, const char * dst)
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *src)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
4.字符串逆置
void strRev(char *s)
{
char temp, *end = s + strlen(s) - 1;
while( end > s)
{
temp = *s;
*s = *end;
*end = temp;
--end;
++s;
}
}
字符串逆置更多内容
5.字符串求长
size_t mystrlen(const char *str)//字符串求长
{
assert(str);
int i = 0;
while (*str != '