| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 503 人关注过本帖
标题:初学指针的困扰
只看楼主 加入收藏
guang
Rank: 4
来 自:广东深圳
等 级:贵宾
威 望:13
帖 子:1414
专家分:285
注 册:2006-4-3
结帖率:100%
收藏
 问题点数:0 回复次数:3 
初学指针的困扰

麻烦各位高手帮我看看这个该怎么改:
#include <iostream.h>
void main()
{
char m[10];
cin.getline(m,10,"\n");
char *p=m;
for(int i=0;i<10;i++)
{
if(m[i]=='d') //指定要删除的字符
m[i]=m[i+1]; //用后一个字符复盖要删除的字符
}
while(*p!='\0')
cout<<*p++;
cout<<endl;
}

删除指定的字符后怎么出现了两个后一个字符?该怎么改呀?

谢了!!!!

搜索更多相关主题的帖子: 指针 困扰 初学 
2006-04-04 11:44
poppylx
Rank: 1
等 级:新手上路
帖 子:367
专家分:0
注 册:2004-9-27
收藏
得分:0 
呵呵 你将元素m[i]删除了
用m[i+1]覆盖
这个时候你的m[i]与m[i+1]为同一个数 肯定会有两个一样的

你必须将m[i]以后的所有元素都前移一位
最后一个元素赋一个不可能的值 或者将数组的长度减一
一般都是这样实现

动于心而静如水
2006-04-04 12:24
guang
Rank: 4
来 自:广东深圳
等 级:贵宾
威 望:13
帖 子:1414
专家分:285
注 册:2006-4-3
收藏
得分:0 
大哥,大菜鸟我不懂呀,可不可以说明白一点,谢了!!

不相信未作牺牲竟先可拥有,只相信靠双手找到我的欲求!!
我的博客:http://liao5930.blog.
2006-04-04 12:59
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 

void main()
{
char m[10];
cin.getline(m,10,"\n");
char *p=m;
for(int i=0;i<10;i++)
{
if(m[i]=='d') //
m[i]=m[i+1]; //当你想要删除的字符是最末个时,这里有数组越界 的危险,会产生不可预料的结果!!
}
while(*p!='\0')
cout<<*p++;
cout<<endl;
}
...................................
大家一起努力!!!

英者自知,雄者自胜
2006-04-06 18:47
快速回复:初学指针的困扰
数据加载中...
 
   



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

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