在首单词前插入时,中间的空格会变成i ,请大神解答,谢谢

#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);

}

空格插入的位置不对,应该是插入新单词的后面,修改的程序:

 #include <stdio.h>
#include <string.h>
#include <stdlib.h>

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];
    }
    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];
    }
    longchar[start+i]=32;
}

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);
}

图片说明

图片说明
首单词