C和指针之删除字符串第一次出现的子串
来源:互联网 发布:美国非农数据公布网站 编辑:程序博客网 时间:2024/05/17 09:05
1、问题
函数首先先判断substr是否出现在str中,如果它并没有出现,返回0,如果出现,函数应该把str *中位于该字符串后面的所有字符复制到该子串的位置,从而删除这个子串,然后函数返回1,如果 *多次出现str中,函数只删除第1次出现的子串,函数的第2个参数绝不会被修改。
2、实现
#include <stdio.h>#include <stdlib.h>/** *函数首先先判断substr是否出现在str中,如果它并没有出现,返回0,如果出现,函数应该把str *中位于该字符串后面的所有字符复制到该子串的位置,从而删除这个子串,然后函数返回1,如果 *多次出现str中,函数只删除第1次出现的子串,函数的第2个参数绝不会被修改。 */int del_substr(char *str, const char *substr){ //条件判断 if (str == NULL || substr == NULL) return 0; //指向str char *str1; //指向substr const char *substr1 = substr; for (; *str != '\0'; ++str) { str1 = str; while (*str1 == *substr1 && str1 != '\0' && substr1 != '\0') { ++str1; ++substr1; } //如果程序走到这里,就找到了子字符串 if (*substr1 == '\0') { //让str指向后面覆盖部位 while (*str1 != '\0') *str++ = *str1++; //末尾置为\0 *str = '\0'; return 1; } substr1 = substr; } return 0;}int main(){// char *str = "chenyugogongchenyu";// 我一开始是按上面写的,运行出错了Bus error: 10// 字符串常量存储在常量区,只能读,不能写,所以报错 const char *substr = "gong"; int result = del_substr(str, substr); if (result) printf("str contain substr and str is %s and substr is %s\n", str, substr); else printf("str do not contain substr\n"); return 0;}
3、运行结果
str contain substr and str is chenyugochenyu and substr is gong
阅读全文
0 0
- C和指针之删除字符串第一次出现的子串
- [C++]Implement strStr() 找到子字符串第一次出现的位置
- 《C和指针》6.18.2删除子字符串
- c语言程序设计进阶week3:删除字符串中的子串(字符串与指针的完美结合)
- 删除一字符串的出现的字符子串
- 从字符串中删除出现的子串
- 删除字符串中出现次数最少的子串
- 指针解决字符串删除子串
- c之PAT刷题---删除字符串中的特定子串
- 获取一个子字符串第一次出现的位置
- 给出字符串a和字符串b,保证b是a的一个子串,请你输出b在a中第一次出现的位置
- 28. Implement strStr() (返回子串在字符串中第一次出现的位置)
- C 超级难搞定的 删除字符串中的子串
- 删除一个字符串里出现次数最多的子字符串
- C语言字符串操作--删除子串
- C语言字符串操作--删除子串
- 【C++】删除字符串中的子串
- 编写函数strdel,参量是字符串string, 和字符character。删除string中第一次出现的character,最后返回string。
- 安装boost遇到问题,libboost_iostreams.a总是编译不出来
- 解决android studio引用远程仓库下载慢(JCenter下载慢)
- 【noip 1999】旅行家的预算
- 已成功连接到库却undefined reference to 错误
- javascript之AJAX(二)json
- C和指针之删除字符串第一次出现的子串
- strlen /sizeof/ 0,'\0','0'中的陷阱+补充字符串字符数与数组大小相等
- codeforces D.Teams Formation
- Lintcode-动态规划-数字三角形
- zzzcms网站微信分享的链接打开500报错,解决办法
- 拦截器+okf封装
- 回家 (无向图割点)
- fred.V7光线追迹软件\
- 文件查看cat_tac_more_less_head_tail