接着上一篇的自己动手写字符串你库函数 一(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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。