为了账号安全,请及时绑定邮箱和手机立即绑定

关于删除的问题

关于删除的问题

C
慕沐4487107 2017-12-19 21:37:17
第一个替换成空字符后,后面的字符就没了,输出替换后的字符串出现替换处后的字符都没了,但并不是替换了 代码如下 #include"stdio.h" int delStr(char *str,char ch) { int i; for(i=0;*(str+i)!='\0';i++) if(*(str+i)==ch) {    *(str+i)='\0'; } puts(str); return 0; } void main() { char *str[100],ch; printf("请输入字符串:"); gets(str); printf("请输入要删除的单个字符:"); ch=getchar(); delStr(str,ch); }
查看完整描述

2 回答

?
Camel97

TA贡献49条经验 获得超38个赞

C语言字符串是以'\0'表示结尾。你把中间某一个字符改成'\0'相当于把一个字符串截断成了两个字符串。

所以在调用函数输出字符串的时候其实只输出了前面那个字符串。

*(str+i)='\0';如果把这句话改成 *(str+i)=' ';你就能看到删除单个字符后的字符串。被删除字符被用空格代替。

如果你想删除之后中间不出现空格,而是一个连续的字符串。提供思路你自己试试

*(str+i)='\0'; 然后把这两个字符串拼接起来。你可以选择把被删除字符后面的所有字符向前移动一位,或者用string.h中的相关函数完成。

查看完整回答
2 反对 回复 2017-12-20
?
慕沐4449596

TA贡献34条经验 获得超15个赞

表示不懂你的问题,能讲清楚点这代码要干嘛,你又出现什么情况么

查看完整回答
反对 回复 2017-12-20
  • 2 回答
  • 0 关注
  • 1135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信