strlen,strcpy,strncpy,strcmp,strcat,strstr的用法,函数原型及函数的实现
来源:互联网 发布:石全石美软件破解版 编辑:程序博客网 时间:2024/05/21 21:40
1.strlen
用法:用来计算字符串(unsigned int型)的长度。
函数原型:extern int strlen(const char*str)。
函数实现:
int my_strlen(const char*str)
{
int len=0;
assert(str);
if(str==NULL)
{
return -1;
}
while((*str++)!='\0')
{
len++;
}
return len;
}
注意:strlen求的是字符串实际长度,只跟内容有关,不包括‘\0’,要和sizeof区别开来。
如下例子:
char str[20]="0123456789";
int a=strlen(str); //a=10;
int b=sizeof(str); //而b=20;
2.strcpy
用法:用来对字符串进行拷贝。
函数原型:char*strcpy(char*dst,const char*src)函数实现:
一般写法(没有考虑内存重叠问题)如下:
char*my_strcpy(char*dst,const char*src)
{
assert(dst);
assert(src);
char *ret=dst;
while((*dst++=*src++)!='\0')
{
;
}
return ret;
}
正确写法:
char* my_strcpy(char*dst,const char*src)
{
char*ret=NULL;
ret=dst;
assert(dst);
assert(src);
my_memcpy(dst,src,strlen(src)+1);
return ret;
}
memcpy的函数实现:
char* my_memcpy(char*dst,const char*src,int len)
{
char*ret=dst;
assert(dst);
assert(src);
if(dst>=src&&dst<=src+len-1)
{
dst=dst+len-1;
src=src+len-1;
while(len--)
{
*dst++=*src++;
}
}
else
{
while(len--)
{
*dst++=*src++;
}
}
return ret;
}
3.strncpy
用法:用来把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间,返回dst。
函数原型:char*strncpy(char*dst,char*src,int n)
函数实现:char*my_strncpy(char* dst,char* src,int n)
{
assert(dst);
assert(src);
int p1=strlen(dst);
int p2=strlen(src);
char* ret=dst;
if(p1>=p2)
{
memset(dst,0,p1);
while(n--&&(*src!='\0'))
{
*dst++=*src++;
}
return ret;
}
if(p1<p2)
{
while(*dst!='\0'&&n--)
{
*dst++=*src++;
}
*(dst+p1)=NULL;
return ret;
}
}
4.strcmp
用法:用来比较两个字符串的大小,比较的是两者第一个不相同的字符,26个字母前面的比后面的小,小写字母比大写字母大,当字符1>字符2时,strcmp()>0;当字符1<字符2时,strcmp()<0;当字符1=字符2时,strcmp()=1.
函数原型:int strcmp(const char*dst,const char*src)
函数实现:
int my_strcmp(const char*dst,const char*src)
{
assert(dst);
assert(src);
while(*dst++==*src++&&dst!='\0')
{
;
}
return *dst-*src;
}
4.strcat
用法;连接两个字符串的
函数原型:char*strcat(char*dst,char*src)
{
assert(dst);
assert(src);
char*ret=dst;
while(*dst!='\0')
{
dst++;
}
while(*src!='\0')
{
*dst++=*src++;
}
*dst='\0';
return ret;
}
5.strstr
用法:用来搜索子串在字符串第一次出现的位置。
函数原型:char*strstr(char*dst,char*src);
函数实现:
char* my_strstr(char*dst,char* src)
{
assert(dst);
assert(src);
while((*dst++)!='\0')
{
char* ret1=dst;
char* ret2=src;
while(*dst==*src)
{
dst++;
src++;
if(*src=='\0')
{
return ret1;
}
}
dst=ret1++;
}
return NULL;
}
- strlen,strcpy,strncpy,strcmp,strcat,strstr的用法,函数原型及函数的实现
- strlen strcmp strcat strcpy strncpy strstr strchar函数的实现
- 模拟实现strcpy,strcmp,strstr,strncpy,strncmp,strcat,strlen函数
- strcpy/strncpy/strcat/strcmp/strlen函数的c语言实现
- strcpy,strncpy, strlen, strcmp strcat函数实现
- strcmp、strcat、strcpy、strncpy函数的实现
- strlen,strcpy,strcat,strcmp函数的实现
- Strcat,strcpy,strcmp,Strlen函数原型-实现
- strcpy, strcmp, strcat, strstr, strlen的实现
- strcpy(),strcat(),strlen(),strcmp(),strstr(),strchr()等函数的使用。
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- strlen(),strcpy(),strncpy(),strcat(),strncat(),strcmp(),strncmp()等函数的实现
- C语言中strlen、strcpy、strncpy、strcat、strnact、strcmp、memcpy函数的实现
- C语言中strlen、strcpy、strncpy、strcat、strnact、strcmp、memcpy函数的实现
- strlen函数 strcpy函数 strcmp函数 strstr函数 strcat函数 memcpy函数 memmove函数 以及字符串反转函数的实现
- 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp
- Android中常用的正则表达式(持续补充中)
- mysql的5中查询子句之三having条件查询
- https原理交互图
- Leetcode——18.4Sum
- 安卓开发简单扫描二维码操作
- strlen,strcpy,strncpy,strcmp,strcat,strstr的用法,函数原型及函数的实现
- 解决mysql“Access denied for user 'root'@'localhost'” 的问题
- 数据库删除语句
- GitHub 上整理的一些常见的插件库
- JVM调优总结(十一)-反思
- linux source 命令
- URAL
- python xlrd,xlwd,xlutils对excel进行操作
- 软件工程师应该知道的9件事