这是一个字符串插入的C语言程序:为什么结果把原字符串和插入之后的字符串一起输出了呢?

[复制链接]
查看11 | 回复4 | 2013-2-6 00:01:07 | 显示全部楼层 |阅读模式
程序的逻辑是错误的!应该这样方法11)插入点后的先备份2)插入新数据(从插入点p n开始插入另一个串:::3)备份数据拷回来!插入从另一个串拷来的数据后面包括结束符!方法2获取插入数据长度inslen2获取p n后的串长3)p n的串从后起后移inslen位置4)把另一串的inslen个字符插入(复制)至腾出来的位置!...
回复

使用道具 举报

千问 | 2013-2-6 00:01:07 | 显示全部楼层
在insert()函数中,char *p , 这个p的值,在循环中发生了变化,而在函数的最后,又strcpy(p,str); , 导致有效的str中的数据,只是在当前数据的尾部追加上了,出现你的运行结果!修正方法:进入函数前先保存下p,char*s=p;程序结束时,strcpy(s,str);//这里的操作是s位置...
回复

使用道具 举报

千问 | 2013-2-6 00:01:07 | 显示全部楼层
问题出在strcpy(p,str);上,这是的p的地址已经不是那个起始地址了,而是指向了Welcome China!的末尾.只要这样,在insert函数里加char *record=p,,在p的指向没改变时,另record指向它,再把strcpy(p,str);改为strcpy(record,str);就可以了其它的都没问题...
回复

使用道具 举报

千问 | 2013-2-6 00:01:07 | 显示全部楼层
你写的太乱重新 写个 给你 加了注释 自己 参考下吧void insert(char *p,char *pb,int n){
int i;
char temp[50];
for (i = 0; i < n; i++) {//将 p 的前 n 个存到 temp中
temp = p...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行