
设计函数char *insert(s1,s2,n),用指针实现在字符串s1中的指定位置n处插入字符串s2
展开全部
#include<stdio.h>
#include<stdlib.h>
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\n", 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错误!\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;
}
#include<stdlib.h>
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\n", 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错误!\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;
}
展开全部
#include <stdio.h>
char* insert(char* s1,char* s2,int n)
{
int j=0;
char* ss=new char[100];
char* tsptr=ss;
for(int i=0;i<n;i++)
*ss++=*s1++;
while(*s2!='\0')
*ss++=*s2++;
while(*s1!='\0')
{
*ss++=*s1++;
}
*ss='\0';
return tsptr;
}
void main()
{
char s1[]="123456789";
char s2[]="1234";
char* ss=insert(s1,s2,4);
printf("%s",ss);
}
char* insert(char* s1,char* s2,int n)
{
int j=0;
char* ss=new char[100];
char* tsptr=ss;
for(int i=0;i<n;i++)
*ss++=*s1++;
while(*s2!='\0')
*ss++=*s2++;
while(*s1!='\0')
{
*ss++=*s1++;
}
*ss='\0';
return tsptr;
}
void main()
{
char s1[]="123456789";
char s2[]="1234";
char* ss=insert(s1,s2,4);
printf("%s",ss);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char* insert(char* s1, char* s2, int n)
{
strcat(s2, s1+n+1);
s1[n+1] = 0;
strcat(s1, s2);
return s1;
}
{
strcat(s2, s1+n+1);
s1[n+1] = 0;
strcat(s1, s2);
return s1;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |