接着上一篇的自己动手写字符串你库函数 一(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) = ' '; } } //追加字符串 相当于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是为了最后一个为‘ ’ strs->len = desStrLen + sourStrLen + 1; strs->str = (char*)realloc(strs->str, strs->len); while (*s != ' ') { *(strs->str+desStrLen++) = *s++; } } else { strs->len = desStrLen + sourStrLen + 1; while (*s != ' ') { *(strs->str+desStrLen++) = *s++; } } *(strs->str+desStrLen) = ' '; } } //在母串中查找字符 char* my_Strchr(string*des, char ch) { char*des2 = des->str; if (IsEmpty(des) == 0) return NULL; while (*des2 != ' ') { 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 != ' ') { *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; }
版权声明:本文为博主原创文章,未经博主允许不得转载。