| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1159 人关注过本帖
标题:c语言 字符串中删除指定字符问题
只看楼主 加入收藏
投以木桃
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2015-3-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
c语言 字符串中删除指定字符问题
#include<stdio.h>
int main()
{
char s[100],*p ,*q ;
puts("输入小于100个字符:");
gets(s);
char del_x;
printf("输入要删除的字符:");
scanf("%c",&del_x);
for(p=s,q=s;*p!='\0';p++)
  if(*p!=del_x)*q++=*p;
*q=*p;
puts(s);
return 0;
}
请问这个程序中的  *q=*p  的意义是什么
搜索更多相关主题的帖子: return 字符串 c语言 
2015-06-21 20:46
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:5 
*p!='\0'
当退出for循环,*p='\0'
2015-06-21 22:08
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:5 

p的指针地址赋给q
q指针在做自增运算时过滤掉了del_x字符在s字符串的地址
在让q的指针地址指向字符串s的地址
2015-06-21 22:45
投以木桃
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2015-3-6
收藏
得分:0 
回复 2楼 calix
不是的,我想知道的是在循环结束后的 *q=*p  是什么意思
2015-06-21 22:46
o547336583
Rank: 2
等 级:论坛游民
帖 子:14
专家分:17
注 册:2014-12-21
收藏
得分:5 
意思是说找到了要删除的那个字符,所以用同位置的*p中的内容覆盖,而这个过程还在循环过程中,所以p的位置还是会++的
2015-06-21 22:48
投以木桃
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2015-3-6
收藏
得分:0 
回复 3楼 hjx1120
我有点糊涂,在循环结束的时候 p 应该是指向s的末端的吧,那么把这个赋值给q有什么意义呢
2015-06-21 22:50
投以木桃
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2015-3-6
收藏
得分:0 
我想问的是循环结束后的 *q=*p 不是循环中*q++=*p
2015-06-21 22:57
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 5楼 o547336583
q指针指向的是P指针的一个副本
q这个副本因为一些条件有了一些变化
打印出来的字符串也是一个副本

2015-06-21 23:00
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 6楼 投以木桃
q指向s字符串的第0个元素,是最开始的地方,
q做了自增运算,才能打印s这个字符串所有的字符

2015-06-21 23:08
投以木桃
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2015-3-6
收藏
得分:0 
回复 9楼 hjx1120
我想知道,循环结束后,p和q各自是指向什么,如果不加那句话,是怎样的
2015-06-21 23:17
快速回复:c语言 字符串中删除指定字符问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019187 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved