c语言 strcpy,strcat,strcmp函数模拟实现
Posted 程序猿是小贺
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 strcpy,strcat,strcmp函数模拟实现相关的知识,希望对你有一定的参考价值。
c语言 字符串strcpy,strcat,strcmp用函数实现
利用函数实现字符串拷贝
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char *my_strcpy(char *str1, const char *str2)
//参数有效性检测
if (str1 == NULL&&str2 == NULL)
return NULL;
/*
此处也可以运用断言
assert(srt1!=NULL&&str2!=NULL)
*/
//保护参数,否则拷贝完成时会改变其地址
char *pstr = str1;
while (*str2 != '\\0')
*pstr = *str2;
str2++;
*pstr++;
*pstr = *str2; //将最后的\\0赋过去
return str1;
void main()
char str1[30] = "Hello ";
char *str2 = "Linux";
printf("str1=%s\\n",str1);
char *res = my_strcpy(str1, str2);
printf("str1=%s\\n",res);
函数实现字符串链接
函数实现字符串链接
#include<stdio.h>
#include<stdlib.h>
char *my_strcat(char *str1, const char *str2)
//参数有效性检测
if (str1 == NULL && str2 == NULL)
return NULL;
//保护参数
char *pstr1 = str1;
char *pstr2 = str2;
while (*pstr1 != '\\0') //检查pstr1是否为\\0,不是则pstr1++,否则不执行
*pstr1++;
while (*pstr2!='\\0')
*pstr1++ = *pstr2++;;
*pstr1 = '\\0'; //将\\0赋过去
return str1;
void main()
char str1[30] = "Hello ";
char *str2 = "Linux";
printf("str1=%s\\n", str1);
char *res = my_strcat(str1, str2);
printf("str1=%s\\n", res);
函数实现字符串比较
#include<stdio.h>
#include<stdlib.h>
char *my_strcmp(const char *str1, const char *str2)
//参数有效性检测
if (str1 == NULL && str2 == NULL)
return NULL;
//由于定义了两个const类型的参数,所以不用保护参数
int res; //定义一个值res接收结果
while (*str1 != '\\0' || *str2 != '\\0')
res = *str1 - *str2;
if (res != 0)
break;
*str1++;
*str2++;
return res;
void main()
char *str1 = "Hello ";
char *str2 = "Hello max";
int res = my_strcmp(str1, str2);
printf("res=%d\\n", res);
–end
- 由于作者能力有限,目前也只能够了解这些,若是有大佬有不一样的想法欢迎评论区不吝赐教,批评,我一定虚心接受
以上是关于c语言 strcpy,strcat,strcmp函数模拟实现的主要内容,如果未能解决你的问题,请参考以下文章
C语言——模拟实现库函数(strcat,strcmp,strcpy,srelen)
用C语言程序,通过自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和的功能
C语言常用字符串操作函数大全详解(strstr,strtok,strrchr,strcat,strcmp,strcpy,strerror,strspn,strchr等)