自己动手写字符串库函数 三(C语言实现)
2015-01-11 23:14
218 查看
//子串同母串比较 是否在母串中 第二种方法 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 != '\0';) { 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 != '\0') { *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; //将最后一个位置的字符设置为'\0' *(des->str + des->len - 1) = '\0'; //realloc函数在分配空间的时候不会将多余的空间填充为'\0' } //删除指定位置的字符 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 != '\0';) { char*des2 = des1; *des2++ = *++des1; } des->len -= 1; } } } //在此 测试代码比较乱,我就不贴出来了,也是比较简单的
相关文章推荐
- 自己动手写字符串库函数 四(C语言实现)
- 自己动手写字符串库函数 一(C语言实现)
- 自己动手写字符串库函数 二(C语言实现)
- 自己实现的C语言string.h 头文件的字符串函数与几个内存操作函数
- 实现一个简易的IoC框架(上)(此篇与Spring.NET无关,为自己手写IoC框架)
- 写给过去的自己-No.1-数据结构篇-单向链表C语言的实现
- 【C语言】自己编写程序实现strrchr函数,即在给定字符串中找特定的字符并返回最后出现的位置
- 自己写的成绩管理系统(c语言实现)
- 自己手写代码实现下拉刷新(对于小项目第三方库太占资源)
- 用c语言实现一个自己的atof()函数
- c语言:实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
- C语言字符切割函数的实现——不需要自己指定分配多少个字符串分组
- C语言测试。自己实现scandir 函数
- 自己用代码实现非空目录的删除(java及C语言)
- 自己实现C语言单向链表
- C语言自己实现的 整形转换成字符串函数itoa(int Number,char* Str)
- 【原创】程序员从SEO角度来开发网站之自己手写代码来实现URL重写
- 自己实现substr函数——C语言
- 【c语言】不用库函数自己实现字符串的复制
- 自己实现C语言atoi函数和线程安全版的itoa函数