自己动手写字符串库函数 二(C语言实现)

接着上一篇的自己动手写字符串你库函数 一(C语言),接着往下面写

//具体实现 string.c
//追加字符
void Append_Char(string*strs, const char ch)
{
	if (IsEmpty(strs) != 0 && ch != NULL)
	{
		int strLen = my_StrLen(strs->str);
		//需要重新分配空间
		strs->str = (char*)realloc(strs->str, strs->len + sizeof(char));
		strs->len += 1;  //长度加+1
		*(strs->str+strs->len - 2) = ch;
		*(strs->str+strs->len - 1) = '\0';
	}
}

//追加字符串  相当于StrCat函数
void Append_Str(string*strs, const char* s)
{
	if (IsEmpty(strs) != 0 && s != NULL)
	{
		int desStrLen = my_StrLen(strs->str);
		int sourStrLen = my_StrLen(s);
		if (desStrLen + sourStrLen > strs->len)
		{
			//int needLen = desStrLen + sourStrLen - strs->len;
			//重新分配空间  +1是为了最后一个为‘\0’
			strs->len = desStrLen + sourStrLen + 1;
			strs->str = (char*)realloc(strs->str, strs->len);
			while (*s != '\0')
			{
				*(strs->str+desStrLen++) = *s++;
			}
		}
		else
		{
			strs->len = desStrLen + sourStrLen + 1;
			while (*s != '\0')
			{
				*(strs->str+desStrLen++) = *s++;
			}
		}
		*(strs->str+desStrLen) = '\0';
	}
}

//在母串中查找字符
char* my_Strchr(string*des, char ch)
{
    char*des2 = des->str;
    if (IsEmpty(des) == 0)
        return NULL;
    while (*des2 != '\0')
    {
        if (*des2 == ch)
            return des2;
        else
            des2++;
    }
    return NULL;
}

//删除的指定的字符串
void my_DelChar(string*des, char ch)
{
    if (IsEmpty(des) == 0 || ch == NULL)
        return;
    else
    {
        char* des2 = my_Strchr(des, ch);
        char*des3 = des2;
        if (des2 == NULL)
            return;
        //将后面的向前移动
        while (*des2 != '\0')
        {
            *des3++ = *++des2;
        }
        des->len -= 1;  //长度减一
    }
}

//main函数中测试
#include "String.h"

int main()
{
    string strs;
    Init_With_Str(&strs,"tasklist");
    //Append_Char(&strs,'a');
    //Append_Str(&strs,"abc");
    //char*flag= my_Strchr(&strs,'a');
    my_DelChar(&strs,'a');
    Print_String(&strs);
    getchar();
    return 0;
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值