自己实现的库函数1(strlen,strcpy,strcmp,strcat)
为了便于理解和使用库函数,先把自己实现的几个函数以及测试函数呈现如下。
//求字符串长度的函数
int my_strlen(const char* pStr)
{
assert(pStr != NULL);
int length = 0;
while (*pStr++ != '\0')
{
length++;
}
return length;
}
//字符串拷贝函数
char* my_strcpy(char* strDest, const char* strSrc)
{
assert(strDest != NULL && strSrc != NULL);
char* pDest = strDest; //保护参数
const char* pSrc = strSrc;
while (*pSrc != '\0')
{
*pDest++ = *pSrc++;
}
*pDest = '\0';
return strDest;
}
//字符串比较函数
int my_strcmp(const char* strDest, const char* strSrc)
{
assert(strDest != NULL && strSrc != NULL);
if (*strDest == '\0'&&*strSrc != '\0')
{
return 0;
}
const char* pDest = strDest;
const char* pSrc = strSrc;
int result = 0; //用于记录比较结果
while (*pDest != '\0' || *pSrc != '\0')
{
if ((result = *pDest - *pSrc) != 0)
{
break; //当两字符串不相等时跳出,相等是继续往后指
}
pDest++;
pSrc++;
}
if (result > 0)
{
result = 1;
}
else if (result<0)
{
result = -1;
}
return result;
}
//字符串连接函数
char* my_strcat(char* strDest, char* strSrc)
{
assert(strDest != NULL && strSrc != NULL);
char* pDest = strDest;
char* pSrc = strSrc;
while(*pDest != '\0') //先将pDest指到字符串末尾
{
pDest++;
}
while (*pSrc != '\0')
{
*pDest++ = *pSrc++;
}
*pDest = '\0';
return strDest;
}
void Test()
{
char c1[5] = "abcd";
char c2[4] = "123";
char c3[20] = "123456";
printf("c1-length:%d\n", my_strlen(c1));
printf("my_strcpy(c1,c2):%s\n", my_strcpy(c1, c2));
//printf("%s\n", my_strcpy(c1, c3)); //不能处理这种超出范围的,程序会崩溃!!
printf("my_strcmp(c1,c2):%d\n", my_strcmp(c1, c2));
printf("my_strcmp(c2,c3):%d\n", my_strcmp(c2, c3));
printf("my_strcat(c3,c2):%s\n",my_strcat(c3,c2));
}
自己实现的库函数1(strlen,strcpy,strcmp,strcat)的更多相关文章
- 实现字符串函数,strlen(),strcpy(),strcmp(),strcat()
实现字符串函数,strlen(),strcpy(),strcmp(),strcat() #include<stdio.h> #include<stdlib.h> int my_ ...
- 转载 C++常用库函数atoi,itoa,strcpy,strcmp的实现
C++常用库函数atoi,itoa,strcpy,strcmp的实现 C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. ...
- strlen strcat strcpy strcmp 自己实现
strlen strcat strcpy strcmp 自己实现 strlen include <stdio.h> #include <string.h> #include & ...
- strcpy(),strcat()的用法
strcpy(): 定义一个字符串char a[20],和一个字符串c[]="i am a teacher!"; 把c复制到a中就可以这样用:strcpy(a,c); 这个函数包含 ...
- c语言中几个常见的库函数strlen、strcmp、strcat、strcpy、strncpy、memset、memcpy、memmove、mmap
1.strlen() 1)计算给定字符串的长度,不包括’\0’在内 unsigned int strlen(const char *s) { assert(NULL != s);//如果条件不满足,则 ...
- strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数
strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...
- 面试题:实现strcpy,strlen,strcmp,strcat,memcpy 之c-style字符串
哪里可以看到c库函数的源码? gnu的c运行库glibc,但是源码的实现却是复杂的,需要考虑效率,stlen源码分析. c-style字符串有个约定,以空字符结尾,即 '\0' . ' }; &quo ...
- strlen(); strcpy(); strcat(); strcmp() ---笔记
指针小知识点: int a =10; int *p=&a; int *q=p; //p中保存的是a的地址 int *q=p; //将p的值赋给q 作用是让q也指向a ...
- c/c++面试题(3)strcat/strcmp/strlen/strcpy的实现
1.编写一个函数实现strlen以及strcpy函数. strcpy函数. 后面的字符串拷贝到一个字符数组中,要求拷贝好的字符串在字符数组的首 地址,并且只拷贝到'\0'的位置.原型是 char* m ...
随机推荐
- ZOJ 1586 QS Network (最小生成树)
QS Network Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Submit Sta ...
- 关于cornerstone无法上传library文件的问题
在CornerStone中先选中左边的项目: 然后在菜单栏里面选择View->ShowIgnoreItems, 再选择项目中的library文件,点击Add按钮即可上传到服务器:
- 【CSS3】---结构性伪类选择器-first-child+last-child
结构性伪类选择器—first-child “:first-child”选择器表示的是选择父元素的第一个子元素的元素E.简单点理解就是选择元素中的第一个子元素,记住是子元素,而不是后代元素. 示例演示 ...
- [CAMCOCO][C#]我的系统架构.服务器端.(一)
尽量少的前言 虽然写了N年代码了,但总觉得什么东西都是囫囵吞枣,无法尽得其精髓.最近整理了一套心目中的架构,如有错误之处,烦劳不吝指正,老胡在此不胜感激!! 第一篇 我心目中的架构 做了无数个系统,写 ...
- PKIX: unable to find valid certification path to requested target
// Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = n ...
- mysql数据库用户和权限管理记录
一.MySQL用户的基本说明: 1.1 用户的基本结构MySQL的用户:用户名@主机 ■用户名:16个字符以内■主机:可以是主机名.IP地址.网络地址等主机名:www.111cn.net,localh ...
- Windows下搭建论坛
Windows下搭建论坛 真正的O基础架构,一步一步走向成功 转载请注明原作者出处 环境准备篇 安装集成包软件 解压后如下 以管理员身份运行setup的批处理 选择推荐的apache版本 选择推荐的m ...
- JqueryPagination 分页插件使用说明
JqueryPagination是个简单轻量级的分页插件,使用起来很容易,只要初始化一个实例,并设置总数量.翻页回调函数.其它参数就可以实现无刷新分页功能了 1 首先引入相关js文件: <lin ...
- 【学习笔记】【C语言】数组
1. 什么是数组 数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的 2. 数组的特点 只能存放一种类型的数据,比如int类型的数组.float类型的数组 里面存放的数据称为“元素 ...
- C++ Vector 动态数组
Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...