设计函数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 展开
#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 展开
3个回答
展开全部
程序有问题, 有内存泄漏,
char *input(char *a) // 这里改为char *input(char *&a), 当然用完搜弊了要free掉
{
a=(char *)malloc(100);
gets(a);
return (a);
}
还有你没必要返回两次, 参数a可以返棚漏轮链信回, return (a);也可以
char *input(char *a) // 这里改为char *input(char *&a), 当然用完搜弊了要free掉
{
a=(char *)malloc(100);
gets(a);
return (a);
}
还有你没必要返回两次, 参数a可以返棚漏轮链信回, return (a);也可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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();
}
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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();
}
#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));
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询