我是靠谱客的博主 震动老师,最近开发中收集的这篇文章主要介绍C语言: @ 模拟实现字符串操作函数(strlen、strcpy、strcat、strcmp、strstr ),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

strlen 字符串长度

int my_strlen(char* str)
{
assert(str);
//递归实现
//if (*str != '')
//	return (1 + my_strlen(str + 1));
//return count;
//非递归实现
int count = 0;
while (*str != '')
{
str++;
count++;
}
return count;
}
int main()
{
char *str = "abcdef";
int ret = my_strlen(str);
printf("%dn", ret);
system("pause");
return 0;
}

strcpy 字符串拷贝

char* my_strcpy(char* dst, const char* src)
{
assert(dst);
assert(src);
char* ret = dst;
while (*dst++ = *src++)
{
;
}
return ret;
}
int main()
{
char dst[] = "abcdef";
char *src = "1234";
my_strcpy(dst, src);
printf("my_strcpy: %sn",dst);//结果为 1234
system("pause");
return 0;
}

strcat 字符串追加(拼接)

char* my_strcat(char* dst, const char* src)
{
assert(dst);
assert(src);
char* ret = dst;
while (*dst != '')//先将dst加到'',
{
dst++;
}
while (*dst++ = *src++)//开始拼接
{
;
}
return ret;
}
int main()
{
char dst[] = "abcdef";
char *src = "1234";
my_strcat(dst, src);
printf("my_strcat: %sn",dst);//结果为 abcdef1234
system("pause");
return 0;
}

strcmp字符串比较

int my_strcmp(const char* dst, const char* src)
{
assert(dst);
assert(src);
int ret = 0;
while (*dst == *src && *dst!='' && src!='')
{
dst++, src++;
}
ret = *dst - *src;
if (ret > 0)
{
return 1;
}
else if (ret < 0)
{
return -1;
}
return 0;
}
int main()
{
char *dst = "abcdef";
char *src = "abcd";
int ret = my_strcmp(dst, src);
printf("my_strcmp ret is: %dn",ret);//结果为1
system("pause");
return 0;
}

strstr 在中查找另一个字符串

const char *my_strstr(const char *dst, const char *src)
{
assert(dst);
assert(src);
if (*src == '')//如果为'',则说明没有字符,返回NULL
{
return NULL;
}
const char *p1 = dst;//指向开始
const char *p2 = src;
char *q = NULL;//
while (*p1 != '')//从哪里开始
{
q = p1;//每次都更新
p2 = src;//每次都从最开始匹配
//查找子串
while (*p2 && *p1 == *p2 && *p1)
{
p1++;
p2++;
}
if (*p2 == '')//到这说明p2与p1匹配完了,即比较完了
{
return q;
}
//没有找到,继续++看下一个是否可以匹配
p1++;
}
return NULL;//没有找到返回NULL
}
//测试
int main()
{
//用指针定义一个变量str,在栈上指向字符常量区的字符串,不能直接被修改,所以加const较好,可以提前发现错误
const char *str = "abcdef";
const char *sub_str = "cd";
printf("%sn", my_strstr(str, sub_str));
system("pause");
return 0;
}

最后

以上就是震动老师为你收集整理的C语言: @ 模拟实现字符串操作函数(strlen、strcpy、strcat、strcmp、strstr )的全部内容,希望文章能够帮你解决C语言: @ 模拟实现字符串操作函数(strlen、strcpy、strcat、strcmp、strstr )所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部