#include<stdio.h>
#include<string.h>
char * InsertStr(char * s,int pos,char * t)
{
int i;
char *n=s;
for (i = strlen(s); i >= pos - 1; i--)
n[i + strlen(t)] = s[i];
for (i = 0; i < strlen(t); i++)
n[pos - 1 + i] = t[i];
return n;
}
int main()
{
char a[500],b[500];
int pos;
scanf("%s%s%d",a,b,&pos);
puts(InsertStr(a,pos,b));
return 0;
}
#include<stdio.h>
#include<string.h>
char n[1000];
char *InsertStr(char *s,int pos,char *t)
{
int i,j;
for(i=0;i<pos-1;i++)
{
n[i]=s[i];
}
int e=i;
for(j=0;j<strlen(t);j++)
{
n[e++]=t[j];
}
for(i=pos-1;i<strlen(s);i++)
{
n[e++]=s[i];
}
n[e]=NULL;
return n;
}
int main()
{
char a[500],b[500];
int pos;
gets(a);
gets(b);
scanf("%d",&pos);
puts(InsertStr(a,pos,b));
return 0;
}
#include<stdio.h>
#include<string.h>
#include<malloc.h>
char *InsertStr(char *s,int pos,char *t)
{
int i,j;
char *n=(char *)malloc(1000*sizeof(char));
for(i=0;i<pos-1;i++)
{
n[i]=s[i];
}
int e=i;
for(j=0;j<strlen(t);j++)
{
n[e++]=t[j];
}
for(i=pos-1;i<strlen(s);i++)
{
n[e++]=s[i];
}
n[e]=NULL;
return n;
}
int main()
{
char a[500],b[500];
int pos;
gets(a);
gets(b);
scanf("%d",&pos);
puts(InsertStr(a,pos,b));
return 0;
}
#include<stdio.h>
#include<string.h>
char *InsertStr(char *s,int pos,char *t)
{
int i,j;
char *n=s;
for(i=0;i<pos-1;i++)
{
n[i]=s[i];
}
int e=i;
for(j=0;j<strlen(t);j++)
{
n[e++]=t[j];
}
for(i=pos-1;i<strlen(s);i++)
{
n[e++]=s[i];
}
n[e]=NULL;
return n;
}
int main()
{
char a[500],b[500];
int pos;
gets(a);
gets(b);
scanf("%d",&pos);
puts(InsertStr(a,pos,b));
return 0;
}
这四段代码前两段能够通过,后两个不能通过。想问一下后两个代码有什么问题?