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

来源:互联网 发布:科研立项题目 软件 编辑:程序博客网 时间:2024/05/17 22:08

接着上一篇的自己动手写字符串你库函数 一(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;}


0 0