题目
代码
//StudybarCommentBegin
#include <stdio.h>
char* insert(char* s1,char* s2,int n);
int main()
{
int n;
char s1[100], s2[100];
char *ss;
scanf("%s", s1);
scanf("%s", s2);
scanf("%d", &n);
ss=insert(s1,s2,n);
printf("%s",ss);
return 0;
}
//StudybarCommentEnd
char* insert(char* s1,char* s2,int n)//char a[100]不能定义在函数内部,因为返回时被释放
{
char *b;
int i;
int j;
for(i=0;i<n;i++)//用strncpy把s1中的字符拷进新的
{
b[i]=s1[i];
}
for(j=0;s2[j]!='\0';j++)//用strcat把s2追加到新的末尾
{
b[n+j]=s2[j];
}
for(i=0;b[n+i]!='\0';i++)
{
b[n+j+i]=s1[n+i];
}
b[n+j+i]='\0';
return (b);
}
tips
- 字符串的赋值不能用等于,用strcpy/strncpy拷贝字符串(即地址)
- 详见代码中的注释