指针练习(2018)B. 实验9_8_设计函数 void delcharfun(char *str,char ch)

这个倒是很顺利就过了,确实用指针去处理字符数组会比较容易,因为不需要用变量去保存上界,遍历字符的时候遇到’\0’自然就结束了,可以用while。
需要注意的是,删除后原来位置的元素发生了改变,所以还要再检查一次当前位置的元素是不是要检查的字符,否则如果有多个连续的关键字,会留下一些没删掉。

#include <stdio.h>
void delcharfun(char *str,char ch);
int main(int argc, char const *argv[])
{
	char str[101],ch;
	gets(str);
	ch=getchar();
	delcharfun(str,ch);
	puts(str);
	return 0;
}

void delcharfun(char *str,char ch)
{
	char *p=str,*q;
	while(*p!='\0')
	{	//用p去遍历字符串中的每个字符 
		if(*p==ch)
		{
			q=p;//如果碰到了字符,用q保存p的位置,用q执行数组的元素删除
			//不用担心越界,之后的元素都会写成'\0' 
			while(*q!='\0')
			{	
				*q=*(q+1);
				q++;
			}
		}
		if(*p!=ch) p++;//!注意,当前位置的元素会发生改变,还需要再次检查,不能直接跳过 
	}
}

题目描述
问题描述:
从字符串str中删除指定的字符ch。同一字母的大、小写按不同字符处理。
输入与输出要求:
输入一个长度不超过100的非空字符串与一个字符,代表需要处理的字符串与需要从字符串中删除的字符。其中字符串中不会出现空格、换行符。输出删除指定字符以后的字符串,占一行。如果删除指定字符后字符串变为空串,则直接输出空行。

输入样例
abcABCabc#
b
输出样例
acABCac#

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值