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

作者&投稿:尤仇 (若有异议请与网页底部的电邮联系)
设计函数char *insert(s1,s2,n),用指针实现在字符串s1中的指定位置n处插入字符串s2~

#include
#include

int length(char *s);
char *insert(char *s1, char *s2, int n);

void main()
{
char *s1 = "I am going!", *s2 = "not ";
s1 = insert(s1, s2, 5);
printf("%s
", s1);
free(s1); // 插入字符串时动态申请数组
}

// 把字符串s2插入到字符串s1中的第n位置,存放到字符串s中,并返回
char *insert(char *s1, char *s2, int n)
{
int n1 = length(s1);
int n2 = length(s2);
int i;
char *s = NULL;

if(n > n1 || n < 0)
{
printf("位置n错误!
");
return s1;
}

s = (char *)malloc(n1+n2+1);

for(i=0; i<n; i++)
{
*(s+i) = *(s1++);
}

for(;*s2 != '\0'; i++)
{
*(s+i) = *(s2++);
}

for(;*s1 != '\0'; i++)
{
*(s+i) = *(s1++);
}

*(s+i) = '\0';

return s;
}

// 计算字符串的长度
int length(char *s)
{
int len = 0;
while(*(s++) != '\0') len++;
return len;
}

#includeint insert(char *s1, char *s2, int f){ char *cp, *tcp; tcp = s1 + strlen(s1); cp = s1 + f; if(tcp = cp) { *(tcp + strlen(s2)) = *tcp; tcp--; } while(*s2 != '\0') { *cp = *s2; cp++; s2++; } return 0;}int main(void){ char str1[128]; char str2[128]; int f; gets(str1); gets(str2); scanf("%d", &f); insert(str1, str2, f); puts(str1); return 0;}

程序有问题, 有内存泄漏,
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();
}

#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();
}


南和县15830257454: 设计函数cha *insert(s1,s2,n)用指针实现字符串s1中指定位置处插入字符串s2. -
於震海定: #include "stdafx.h"#include#include#include#include cha...

南和县15830257454: 编写函数void insert(char *s,int m,int *t),该函数的功能是将字符串t插入到字符串s中的第m个字符的位置 -
於震海定: #include void insert(char s1[ ],char s2[ ],int pos) { if(pos<1) return ; int i,j; char str_h[50]; char str_t[50]; for(i=0;i

南和县15830257454: 用指针编写函数 : insert(s1,s2,f), 其功能是在字符串 s1 中的指定位置 f 处插入字符 串 s2 -
於震海定: #include"stdio.h"#include"string.h" char *insert(char *s1,char *s2,int f) { char s3[80]; int a,i,j; if(*(s1+f-1)!='\0') { for(i=0;i s3[i]=*(s1+i);/*把s1的f之前的字符复制到s3上*/ } else return s1; a=strlen(s2); for(j=0;j s3[i++]=*(s2+j); for(j=f;j s3[i]=*(s1+j); ...

南和县15830257454: 求救c语言:编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插入字符串s2. -
於震海定: 不好意思这么久才给你代码 #include #include void insert(char* cstr,char* substr,char* chstr); int main() { char s1[100],s2[100]; scanf("%s",s1); scanf("%s",s2); insert(s1,s2,"ch"); puts(s1); return 0; } void insert(char* cstr,char* substr,char* ...

南和县15830257454: 编写函数insert(char s1[ ],char s2[ ],int pos),实现在字符串s1中的指定位置pos处插入字符串s2. -
於震海定: #include void insert(char s1[ ],char s2[ ],int pos) { if(pos int i,j; char str_h[50]; char str_t[50]; for(i=0;i { str_h[i]=s1[i]; } str_h[i]='\0'; j=0; while(s1[i]) { str_t[j]=s1[i]; i++; j++; } str_t[j]='\0'; strcpy(s1,str_h); strcat(s1,s2); strcat(s1,str_t); } void main () { char st[50]...

南和县15830257454: 编写函数insert(char s1[ ],char s2[ ],int pos),实现在字符串s1中的指定位置pos处插入字符串s2.
於震海定: #include &lt;stdio.h&gt; #include &lt;string.h&gt; void insert(char s1[ ],char s2[ ],int pos) { if(pos&lt;1) return ; int i,j; char str_h[50]; char str_t[50]; for(i=0;i&lt;pos;i++) { str_h[i]=s1[i]; } str_h[i]='\0'; j=0; while(s1[i]) { str_t[j]=s1[i]; i++; j++; } str_t[j]='\0'; strcpy(s...

南和县15830257454: 关于c语言编程,编写程序 实现涵数char*insert(c har*s1,chae*s2)的功能是 -
於震海定: //很辛苦写的,应该符合你的要求,在Visual C++ 6.0 中完美运行通过//使用的字符串函数介绍:// strlen(计算字符串长度), strcat(接字符串连接到另一字符串末尾)// strncat(将字符串前n个字符连接到另一字符串末尾)strchr(在字符串中查...

南和县15830257454: C++ string类insert函数的用法 -
於震海定: string的成员函数insert有以下多种重载: string &insert(int p0, const char *s);——在p0位置插入字符串s string &insert(int p0, const char *s, int n);——在p0位置插入字符串s的前n个字符 string &insert(int p0,const string &s);——在p0位置插入字符...

南和县15830257454: 用指针方案编写函数insert(s1,s2,f),其功能是在字符串s1中的指定位置f处插入字符串s2.
於震海定: #include<iostream.h> #include<string.h> void insert(char *a,char *b,int c) { char *s1=a; char *s=a+c; strcat(b,s); s1[c]='\0'; strcat(s1,b); strcpy(a,s1); } int main() { char *a=new char[100]; char *b=new char[100]; cin>>a>>b; insert(a,b,1); cout<<a<<endl; return 0; }

南和县15830257454: 编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插入字符s2. 高财富哦 -
於震海定: 是这个意思吗?C语言实现,insert函数未对传入字符串进行边界检测,如果传入数组已满,函数会更改在内存连续的地址上的未知内容,故需保证传入数组未满.如果要在函数中处理需增设一个参数传入数组长度进行判断,以下是代码,包括测...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网