//子串同母串比较 是否在母串中 第二种方法 char* my_FindStr(char*des,const char*sour) { char*des1 = des - 1; char*sour1 = NULL; int desLen = strlen(des); int sourLen = strlen(sour); if (des == NULL || sour == NULL) return NULL; while (des1++ <= des + desLen - (sourLen - 1)) { int flag = 1;//假设事先可以匹配成功 for (sour1 = sour; *sour1 != ' ';) { if (*((des1)+(sour1 - sour)) != *sour1++) { flag = 0; break; } } if (flag == 1) { break; } } return des1; } //删除的指定的字符串 void my_DelChar(string*des,const char ch) { if (IsEmpty(des) == 0 || ch == NULL) return; else { char* des2 = my_StrStr(des, ch); char*des3 = des2; if (des2 == NULL) //没有找到指定的字符 return; //将后面的向前移动 while (*des2 != ' ') { *des3++ = *++des2; } des->len -= 1; //长度减一 } } /* 任意位置插入字符串 ch 插入的字符 pos 插入的位置 从0开始计算 */ void my_InsertChar(string*des,const char ch, int pos) { char* des1; if (IsEmpty(des) == 0 || ch == NULL) return; //对插入的位置进行判断 int desLen = my_StrLen(des->str) + 1; if (desLen < pos || pos < 0) { //TODO:插入的位置不合理 return; } //重新分配空间 des->str = (char*)realloc(des->str, desLen + sizeof(char)); //长度+1 des->len += 1; des1 = des->str; for (char* des2 = des->str + des->len - 2; des2 >= des1 + pos;) { char*des3 = des2; *des3-- = *--des2; } *(des1 + pos) = ch; //将最后一个位置的字符设置为' ' *(des->str + des->len - 1) = ' '; //realloc函数在分配空间的时候不会将多余的空间填充为' ' } //删除指定位置的字符 void my_DelPosChar(string*des, int pos) { if (IsEmpty(des) != 0 && pos >= 0) { //字符串的真实的长度 int relLen = my_StrLen(des->str); if (relLen < pos) return; else { //删除操作 字符往前面移动 将pos位置的字符覆盖 for (char*des1 = des->str + pos; *des1 != ' ';) { char*des2 = des1; *des2++ = *++des1; } des->len -= 1; } } } //在此 测试代码比较乱,我就不贴出来了,也是比较简单的
版权声明:本文为博主原创文章,未经博主允许不得转载。