【C语言】strlen的三种实现方法,strcmp,strcat,strcpy
2016-09-26 18:04
465 查看
首先我们来看一下大家学习中经常熟悉用到的strlen函数。
strlen 1:指针差值返回int my_strlen(const char *str)
{
char *pst = (char *)str;
assert(str);
while(*str)
{
str++;
}
return str - pst;
} strlen2:递归实现
int my_strlenT(const char *str)
{
assert(str);
if(*str)
return 1+my_strlenT(str+1);
else
return 0;
} strlen3:计数器控制
int my_strlenO(const char *str)
{
int count = 0;
assert(str);
while(*str++)
{
count++;
}
return count;
} strcmp的书写:
int strcmp(const char *str, const char *Dstr) //判断函数,不允许改变参数y
{
int ret = 0; //定义返回值
assert((str != NULL)&&(Dstr != NULL)); //判D断
while(!(ret =*(unsigned char*)str - *( unsigned char *)Dstr) && Dstr)
//计算ret的值:o若??字符串的值相 //同则为a0,大于为,小于为a-1;
{
str++; //当判断字符串为时结束;
Dstr++;
}
if(ret < 0)
ret = -1;
else if (ret > 0)
ret = 1;
return ret;
} strcpy:#include <stdio.h>
#include <assert.h>
char *my_strcpy(char *Dstr,char const *Sstr)
{
char *Astr = (char *)Dstr;
assert((Dstr != NULL) && (Sstr != NULL));
while((*Dstr = *Sstr) != '\0' )
{
Dstr++;
Sstr++;
}
return Astr;
}strcat:char *my_strcat(char *Dstr,char const *Sstr)
{
char *Astr = (char *)Dstr;
assert((Dstr != NULL) && (Sstr != NULL));
while('\0' != *Dstr)
Dstr++;
*Dstr = ' ';
Dstr++;
while('\0' != *Sstr)
{
*Dstr++ = *Sstr++;
}
*Dstr = '\0';
return Astr;
}好了,这篇博文就这样,写的都是一些我们常用的字符串操作函数,然后大家都注意一下assert和书写的简洁模式。恩,就这样
本文出自 “剩蛋君” 博客,请务必保留此出处http://memory73.blog.51cto.com/10530560/1696331
strlen 1:指针差值返回int my_strlen(const char *str)
{
char *pst = (char *)str;
assert(str);
while(*str)
{
str++;
}
return str - pst;
} strlen2:递归实现
int my_strlenT(const char *str)
{
assert(str);
if(*str)
return 1+my_strlenT(str+1);
else
return 0;
} strlen3:计数器控制
int my_strlenO(const char *str)
{
int count = 0;
assert(str);
while(*str++)
{
count++;
}
return count;
} strcmp的书写:
int strcmp(const char *str, const char *Dstr) //判断函数,不允许改变参数y
{
int ret = 0; //定义返回值
assert((str != NULL)&&(Dstr != NULL)); //判D断
while(!(ret =*(unsigned char*)str - *( unsigned char *)Dstr) && Dstr)
//计算ret的值:o若??字符串的值相 //同则为a0,大于为,小于为a-1;
{
str++; //当判断字符串为时结束;
Dstr++;
}
if(ret < 0)
ret = -1;
else if (ret > 0)
ret = 1;
return ret;
} strcpy:#include <stdio.h>
#include <assert.h>
char *my_strcpy(char *Dstr,char const *Sstr)
{
char *Astr = (char *)Dstr;
assert((Dstr != NULL) && (Sstr != NULL));
while((*Dstr = *Sstr) != '\0' )
{
Dstr++;
Sstr++;
}
return Astr;
}strcat:char *my_strcat(char *Dstr,char const *Sstr)
{
char *Astr = (char *)Dstr;
assert((Dstr != NULL) && (Sstr != NULL));
while('\0' != *Dstr)
Dstr++;
*Dstr = ' ';
Dstr++;
while('\0' != *Sstr)
{
*Dstr++ = *Sstr++;
}
*Dstr = '\0';
return Astr;
}好了,这篇博文就这样,写的都是一些我们常用的字符串操作函数,然后大家都注意一下assert和书写的简洁模式。恩,就这样
本文出自 “剩蛋君” 博客,请务必保留此出处http://memory73.blog.51cto.com/10530560/1696331
相关文章推荐
- 【C语言】strlen的三种实现方法,strcmp,strcat,strcpy
- C语言中strlen() strcpy() strcat() strcmp()函数的实现方法
- 字符串处理函数strlen、strcpy、strcat、strcmp和convert的C语言实现
- C语言模拟实现strcpy、strlen、strcmp、strcat
- [C语言]strcat strstr strcpy strcmp strlen 的实现与使用
- C语言_编写说明strlen、strcpy、strcat、strcmp如何实现的
- strcat,strcpy,strcmp,strlen4个常用字符串处理函数的数组与指针简单实现方法~
- C语言中的字符串函数的实现,strcpy,strlen,strcat,strcmp
- C语言中strlen、strcpy、strncpy、strcat、strnact、strcmp、memcpy函数的实现
- C语言字符串常见操作-strcpy、strlen、strcat和strcmp实现
- C语言中strlen、strcpy、strncpy、strcat、strnact、strcmp、memcpy函数的实现
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- (C语言)自己写字符串操作函数(一)——strlen/strcpy/strcat/strcmp/strchr/strpbrk/strstr等相关函数
- 字符串处理函数gets()、puts()、strcmp()、strlen()、strcpy()、strcat()-C语言
- C语言面试必须会的几个字符串操作函数原型strcpy,strcmp,strlen,strcat
- strcpy的三种实现方式 +strlen strcmp实现
- 【转】字符串操作函数 C语言实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- 自己实现memcpy/strcpy/strcmp/strcat/strlen/strstr
- strlen,strcpy,strcat,strcmp四个函数的原型,memcpy,memset的实现
- atoi itoa strcpy strcmp strlen strcat memcpy memset实现