字符串常用操作的源码,拷贝、连接、比较、子串匹配

本文介绍了C语言中字符串的基本操作,包括字符串连接、子串匹配、字符串拷贝及字符比较等功能的实现方法。通过具体示例代码,展示了如何使用C语言进行这些基本操作。

直接上代码:

一、字符串连接:

1. //src字符串连接到dest后面

char * strcat(char * dest, const char * src)
{

char *temp = test;
while(*dest)
{
dest++;
}
while((*dest++ = *src++) != '\0');

return test;
}

2. //限定最多连接n个 count 个字符

char * strncat(char *dest, const char *src, size_t count)
{

char *temp = dest;

//找到字符串末尾
while(*dest)
{
dest++;
}

while(count-- >0)
{
if(*src)
{
*dest++ = *src++;
}
else{
break;
}
}
*dest = '\0';
return temp;
}


二、子串匹配

//未作优化

int matchSubString(char *s,char *t)
{
int length1 = 0;
int length2 = 0;
char *ps = s;
char *pt = t;
int i,j;

i = 0;
j = 0;
//计算字符串长度
while(*ps++)
{
length1++;
}
while(*pt++)
{
length2++;
}
printf("length1 = %d", length1);
printf("length2 = %d",length2);

//循环判断字符匹配
while((i < length1)&&(j < length2))
{
if(s[i] == t[j])
{
i++;
j++;
}
else
{
i = i - j +1;//i指针回溯,i 和j 增量一样,相减后回到初始位置,在往前推进一个字符。
j = 0;  
}
}

//判断结果
if(j >= length2)
{
return i - j;
}
else
{
return -1;
}

}

三、 字符串拷贝

1. src ----->dest

char * strcpy(char * dest,const char *src)

{

char *temp = dest;
if(NULL == dest)
{
return NULL;
}
while(*src )
{
*dest++ = *src++;
}

*dest = '\0';
return temp;
}

2.  src----->dest,最多拷贝count 个字符
char * strncpy(char * dest,const char *src,size_t count)
{
char * temp = dest;

if(count <= 0)
{
*dest = '\0';
return dest;
}
while(count --)
{
if(*src)
{
*dest++ = *src++;
}
else
{
break;
}
}
*dest ='\0';
return temp;

}

四、比较n个字符 ,返回第一个不一样的字符的ascii码差值,相同返回0

int strnicmp(const char *s1, const char *s2, size_t len)
{
unsigned char c1;
unsigned char c2;
if(len <=0)
{
puts("param error");
return 0;
}
while (len--)
{
c1 = *s1;
c2 = *s2;
if(!c1 || !c2)//只要有一个字符为空就结束循环
{
break;
}
if(c1 == c2)
{
s1++;
s2++;
}else
{
break;
}

}
return c1 - c2;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值