标题:用指针做:字符串的插入
只看楼主
上海妹妹
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2004-11-7
 问题点数:0 回复次数:23 
用指针做:字符串的插入

用指针做:字符串的插入,作出的答案不对呀,

char insert(char *p1,char *p2,int t)

{int i;

for(i=0;*p1!='\0';i++,p1++)

if(i>=t-1&&*p2!='\0')

*p1=*p2++; /*这句有问题,我不知道如何将*p2赋给*p1的同时将p1指向原来的内容逐个后移*/

}

main()

{char a[50],b[50];

gets(a);

gets(b);

insert(a,b,3); /*从第三个数开始插入 */

puts(a);}

情大家帮帮忙!!!!

[此贴子已经被作者于2004-11-11 20:45:26编辑过]

搜索更多相关主题的帖子: 指针 字符 char insert int 
2004-11-11 20:41
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 

*p1++=*p2;

最后还得加一句*p1='\0';

不过算法不好,再想想,怎么还可以更好更简单。


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-11-11 20:46
上海妹妹
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2004-11-7
得分:0 

不对呀,这样的话,p2指针不是不动了?

我是要实现字符串的插入,

比如输入 aaaaa

fff

则输出:aafffaaa

而我的答案是:aafffa

[此贴子已经被作者于2004-11-11 21:04:08编辑过]


我喜欢清新的空气!
2004-11-11 20:53
Dream
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2004-11-5
得分:0 

(答案会不会溢出?)

把题目写清楚点,我想想……

如输入AAAAAA

FFF

结果如何?


!..我鄙视浮躁的人..! 浮躁的人容易问: 我到底该学什么? 别问,学就对了! 浮躁的人容易问: JS有前途吗? 建议你去抢银行! 浮躁的人容易问: 我要中问版,我英文不行! 不行?学呀! 浮躁的人分两种: 只观望而不学的人; 只学而不坚持的人;
2004-11-11 21:19
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 

不好意思,刚才没看清

char insert(char*p1,char*p2,int t) { int i ; char c,b,*ptr; for(i=0;*p1!='\0';i++,p1++) if(i>=t-1&&*p2!='\0') { ptr=p1; c=*ptr; while(*ptr)b=*(ptr+1),*(ptr+1)=c,c=b,ptr++; *p1=*p2++; }

}


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-11-11 21:23
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 

char insert(char*p1,char*p2,int t) { char *ptr1=p1,*ptr2=p2; int i=0;

while(*ptr2)i++,ptr2++;/*计算p2字符个数*/

while(*ptr1)ptr1++; /*ptr1指向p1的未端*/

while(ptr1>=p1+t-1)*(ptr1+i)=*ptr1,ptr1--; /*p1先行后移I个位置*/

while(*p2)*(p1+t-1)=*p2,p1++,p2++; /*copy p2 to p1*/ }

再试试这个


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-11-11 21:44
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
得分:0 

上海妹妹,好勤快的!!值得鼓励啊!!


我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2004-11-11 22:17
上海妹妹
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2004-11-7
得分:0 
多谢夸奖,我以后不懂的题目会常来请教的,谢谢你们啦!

我喜欢清新的空气!
2004-11-12 12:59
Dream
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2004-11-5
得分:0 

你们真是的……

也得让我来表现一下嘛。怎么我好不容易找到一个表现的时候。居然被你们……(我刚把问题解决,居然网卡都没了……)


!..我鄙视浮躁的人..! 浮躁的人容易问: 我到底该学什么? 别问,学就对了! 浮躁的人容易问: JS有前途吗? 建议你去抢银行! 浮躁的人容易问: 我要中问版,我英文不行! 不行?学呀! 浮躁的人分两种: 只观望而不学的人; 只学而不坚持的人;
2004-11-12 13:40
上海妹妹
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2004-11-7
得分:0 

问一下:while(*ptr)b=*(ptr+1),*(ptr+1)=c,c=b,ptr++;是什么意思?不太懂,好像没学过

是不是应该是:while(*ptr) {b=*(ptr+1);*(ptr+1)=c;c=b;ptr++:*p1=*p2++;} ?

[此贴子已经被作者于2004-11-12 17:47:35编辑过]


我喜欢清新的空气!
2004-11-12 17:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-7490-1-1.html




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

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