#include
#include
#include
int startwhere(char longchar[100],char befchar[20]) //找位置函数
{
unsigned int i,k=0;
int flg=1;
for(i=0;i<strlen(longchar)-strlen(befchar)+1;i++)
{
if(flg==1)
{
for(k=0;k<strlen(befchar)+i;k++)
{
if(longchar[k+i]!=befchar[k])
break;
}
if(k>=strlen(befchar))
{
return i;
}
}
flg=0;
if(longchar[i]== ' ')
flg=1;
}
return -1;
}
int charmove(char longchar[100], int start,int len) //移动字符串,腾出空间
{
int i;
if(start+len>100)
return 0 ;
for(i=strlen(longchar);i>=start;i--)
{
longchar[i+len+1]=longchar[i];
}
longchar[i]=32;
return 1;
}
void insert(char longchar[100],char subchar[20],int start) //在腾出的空间插入子串
{
unsigned int i;
for(i=0;i<strlen(subchar);i++)
{
longchar[start+i]=subchar[i];
}
}
void main()
{
char longchar[100];
char subchar[20];
char befchar[20];
int start;
int i;
printf("请输入源字符串\n");
gets(longchar);
printf("请输入要插入的子串\n");
gets(subchar);
printf("请输入要插入在哪个单词之前\n");
gets(befchar);
start=startwhere(longchar,befchar);
i=charmove(longchar,start,strlen(subchar));
if(i==1)
{
insert(longchar,subchar,start);
}
else
{
printf("you input error\n");
}
puts(longchar);
}