题目

习题8-6 删除字符 (20 分)
本题要求实现一个删除字符串中的指定字符的简单函数。

函数接口定义:
void delchar( char *str, char c );
其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。

输入样例:
a
happy new year
输出样例:
hppy new yer

代码

这个题需要考虑很多情况
1.有空格,有删除
2.删除字符在首尾,长度超过20
3.删除后字符串为空
4.被删除的字符不存在
5.字符串为空

//正确答案:
#include<string.h>
#include <stdio.h>
#define MAXN 20void delchar( char *str, char c );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */void delchar( char *str, char c ){char str2[MAXN];int m =strlen(str);int i,j=0;for(i=0;i<=m;++i){if(str[i]=='\0'){str2[j]='\0';}if(str[i]==c){continue;}str2[j]=str[i];j++;}for(int i=0;i<=m;i++){str[i]=str2[i];}
}
int main()
{char str[MAXN], c;scanf("%c\n", &c);ReadString(str);delchar(str, c);printf("%s\n", str);return 0;
}

但是简单的后面移到前面的想法得到的答案是错的:

情况 答案
sample等价,有空格,有删除 答案错误
删除字符在首尾,长度超过20 答案正确
删除后字符串为空 答案错误
被删除的字符不存在 答案正确
字符串为空 答案正确
//错误答案
#include<string.h>
void delchar( char *str, char c ){int m=strlen(str);for(int i=0;i<m;++i){if(str[i]==c){for(int j=i;j<m;++j){str[j]=str[j+1];} }}
}

以下这种也是错的:

情况 答案
sample等价,有空格,有删除 答案正确
删除字符在首尾,长度超过20 答案错误
删除后字符串为空 答案正确
被删除的字符不存在 答案错误
字符串为空 答案正确
void delchar( char *str, char c ){char str2[MAXN];int m =strlen(str);int i,j=0;for(i=0;i<m;++i){if(str[i]=='\0'){str2[j]=str[i];}else if(str[i]!=c){str2[j]=str[i];j++;}}strcpy(str,str2);
}

删除字符串中的指定字符相关推荐

  1. 【PAT甲级 删除字符串中的指定字符】1050 String Subtraction (20 分) C++

    题目 删除字符串中的另一个字符串包含的所有字符. 可以通过判断两个字符串是否为空,来稍微优化一下运行速度 题解C++ #include<iostream> #include<stri ...

  2. c语言怎么删除字符串中的指定字符_Java中你知道几种从字符串中找指定的字符的数量

    遇到这样的问题,常规的思路估计就是遍历String,然后逐个对比.下面先看循环遍历 循环遍历 private static int getNum(String originStr, String ta ...

  3. android 删除字符串中的指定字符

    将"你好"删除: String str = "你好,小明"; String newStr = str.replace("你好"," ...

  4. python使用正则表达式删除字符串中的其它字符只保留数字和字母

    python使用正则表达式删除字符串中的其它字符只保留数字和字母 #python使用正则表达式删除字符串中的其它字符只保留数字和字母 # Python code to demonstrate # to ...

  5. 删除字符串中重复的字符

    描述 删除字符串中重复的字符 分析 方法一,蛮力法.两个循环,大循环每次从数组中取出一个字符,小循环重新遍历该数组是否含有该字符. 方法二:排序法.对两个字符串的字符进行排序,再比较. 方法三:空间换 ...

  6. 在字符串中查找指定字符

    10-1. 在字符串中查找指定字符(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 白洪欢(浙江大学) 输入一个字符串S,再输 ...

  7. 删除字符串中的特定字符

    当要删除字符串中的特定字符时,只需要用find()和erase()两个函数搭配使用即可,find()用于找到特定字符的位置,而erase()则用于删除该位置上的字符. find(c,pos)表示从po ...

  8. mysql更新 在字符串中的指定字符后面拼接字符串

    mysql替换字符串中的指定字符 REPLACE()函数 -替换字符串的指定字符 UPDATE `表名` set `字段`=REPLACE( `字段`,'要被替换字符串的指定字符','替换后的指定字符 ...

  9. C语言学习笔记--删除字符串中特定的字符

    题目:输入一个长度不超过100的字符串,然后输入一个字符,通过程序将字符串中该字符删除并输出最后的字符串,要求字符串存放在数组中,字符串的输入与输出,在主函数中实现删除字符,在自定义函数deletec ...

最新文章

  1. tabcontainer控件太长_AjaxControlToolKit--TabContainer控件的介绍收藏[摘录]
  2. 【循序渐进学Python】1. Python基础知识
  3. pyqt2_官网教程
  4. 2019年,50万大数据DT粉丝都爱的10本书
  5. 上传单.多个文件的函数封装
  6. Maven学习总结(十一)——Maven项目对象模型pom.xml文件详解
  7. 最全,176个HFSS仿真实例模型文件分享
  8. 计算某一点绕另一点旋转一定角度后的坐标
  9. Re: 客户协作 OVER 合同谈判
  10. 为什么会显示贵州云服务器,为什么云服务器都在贵州
  11. Linux云计算虚拟化-使用rancher搭建k8s集群并发布电商网站
  12. wpsjs插件开发-采用js和wps交互功能
  13. 性能测试报告编写技巧
  14. U盘用来安装系统后无法打开
  15. 个人备案的网站能放企业服务器吗,个人及企业域名备案对网站有什么影响
  16. Python 十六进制,十进制转换
  17. 数学运算符 +(加)、-(减)、(乘)、(除)、%(取余;取模)、(整除)、(幂运算)及分支结构
  18. 智能计算机系统的概念,自动智能系统
  19. 网口调试基础之一网口phy驱动
  20. 实战商城app墨刀原型设计-商城简介

热门文章

  1. springboot工程的热部署
  2. python-cx_oracle报错“DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: “
  3. python导入mysqldb_Python导入MySQLdb报错
  4. JDBC中开启事务的批量插入操作
  5. java私塾 java篇_Java私塾跟我学系列——JAVA篇 五、
  6. matlab如何实现降维,matlab怎么把矩阵降维
  7. arduino 土壤温湿度传感器_【雕爷学编程】Arduino动手做(70)---土壤湿度传感器...
  8. count返回0_MySQL实战 | 14 为什么count(*)越来越慢?
  9. java final定义_Java中final关键字的用法
  10. Android投屏(屏幕共享)设计需要考虑的关键因素