代码修改如下(含测试代码):
代码
#include <stdio.h>
void insert(char* s1, char* s2, int n)
{
if (n < 0 || s1 == NULL || s2 == NULL)
{
printf("error");
} else
{
int i, j;
int str1 = 0;
int str2 = 0;
while (s1[str1] != '\0')
str1++;
while (s2[str2] != '\0')
str2++;
if (n > str1)
{
printf("error");
}
char a[100];
for (i = 0; i < n; i++)
{
a[i] = s1[i];
}
for (j = 0; j < str2; j++)
{
a[n + j] = s2[j];
}
for (int k=0;k<str1-n;k++)
{
a[n+str2+k] = s1[n+k];
}
//重新赋值回s1
for(i=0;i<str1+str2;i++)
{
s1[i]=a[i];
}
s1[i] = '\0'; //不是空格
}
}
int main()
{
char s1[100],s2[100];
int n;
printf("input string 1:");
gets(s1);
printf("input string 2:");
gets(s2);
printf("input pos:");
scanf("%d",&n);
insert(s1,s2,n);
printf("%s",s1);
return 0;
}
估计s2为空