设计函数cha *insert(s1,s2,n)用指针实现字符串s1中指定位置处插入字符串s2.

#include"stdafx.h"#include<conio.h>#include<stdio.h>#include<string.h>#include<malloc... #include "stdafx.h"
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include <malloc.h>

char *input(char *a)
{
a=(char *)malloc(100);
gets(a);
return (a);
}
char *insert(char *a,char *b,int n)
{
int l,m,k,i;

l=strlen(a);
m=strlen(b);

for(k=l+m+1;k>n+m-1;k--)
*(a+k)=*(a+k-m);

for(k=n,i=1;k<n+m;k++,i++)
*(a+k)=*(b+i);

for(i=1;i<l+m+1;i++)
printf("%c",*(a+i));

void main(void)
{
int n;
char *a,*b;

printf("input str a:\n");
input(*a);

printf("input str b:\n");
input(*b);

printf("input n:\n");
scanf("%d",&n);

insert(*a,*b,n);

getch();
}

能否将printf("input str a:\n");也放入子函数input中,注意i如果是nput(*b);str 后面的a也要改为b;
还有不用fgets,用gets如何实现input函数,剩下的就改错了
*insert(char *a,char *b,int n),中插入的程序部分参考http://zhidao.baidu.com/question/309246564.html中的补充问题,自己调试过的,在这次的程序中应该不存在问题。*insert(char *a,char *b,int n),应该没问题,问题出在char *input(char *a),求改错,求改错,求改错,求改错,!!!!还有有些提问要是没看明白见http://zhidao.baidu.com/question/309575089.html
展开
 我来答
tjw408797664
2011-08-20 · TA获得超过1153个赞
知道小有建树答主
回答量:1042
采纳率:0%
帮助的人:701万
展开全部
程序有问题, 有内存泄漏,
char *input(char *a) // 这里改为char *input(char *&a), 当然用完搜弊了要free掉
{
a=(char *)malloc(100);
gets(a);
return (a);
}
还有你没必要返回两次, 参数a可以返棚漏轮链信回, return (a);也可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
学用书房
2011-08-20 · TA获得超过721个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:369万
展开全部
input函数不带参数,主函数调用时,input函数的返回值没有接收回来。我试着改一下,你看看喊友
char *input()
{
char *a;
a=(char *)malloc(100);
gets(a);
return (a);
}

void main(void)
{
int n;
char *a,*b;

printf("input str a:\n"郑皮槐握枣);
a=input();

printf("input str b:\n");
b=input();

printf("input n:\n");
scanf("%d",&n);

insert(*a,*b,n);

getch();
}
更多追问追答
追问
input没错了,貌似insert(*a,*b,n);中有错
for(k=l+m+1;k>n+m-1;k--)
*(a+k)=*(a+k-m);

for(k=n,i=1;k<n+m;k++,i++)
*(a+k)=*(b+i);

for(i=1;i<l+m+1;i++)
printf("%c",*(a+i));
这里没错
追答
for(k=n,i=1;k<n+m;k++,i++)
这句中是不是应该:K<=n+m
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuzhi3078
推荐于2018-05-07 · TA获得超过123个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:217万
展开全部
#include "stdafx.h"
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include <malloc.h>

char *input(char *a)
{
a=(char *)malloc(100);
gets(a);
return (a);
}
void insert(char *a,char *b,int n)
{
int l,m,k,i;

l=strlen(a);
m=strlen(b);

for(k=l+m-1;k>昌行l+m-n;k--)
*(a+k)=*(a+k-m);

for(k=n,i=0;k<n+m;k++,i++)
*(a+k)=*(b+i);

for(i=0;i<l+m;i++)
printf("%c",*(a+i));
}

void main(void)
{
int n;
char *a,*b;

printf("input str a:\n");
a=input(a);

printf("input str b:\n"缓迅察);
b=input(b);

printf("扰茄input n:\n");
scanf("%d",&n);

insert(a,b,n);

getch();
}
追问
你改了哪里,我和你写的一样,却出错??
追答
a=input(a);

b=input(b);

insert(a,b,n);

for(k=l+m-1;k>l+m-n;k--)//k=l+m-1
*(a+k)=*(a+k-m);

for(k=n,i=0;k<n+m;k++,i++)//i=0
*(a+k)=*(b+i);

for(i=0;i<l+m;i++)//i=0
printf("%c",*(a+i));
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式