输出结果不对,结果多了几个数,这是什么原因啊

#include
#include
int main(void)
{
    int f,i,j;
    char s1[100],s2[100],s3[100],s4[100],s5[100];
    gets(s1);
    gets(s2);
    scanf("%d",&f);
    for(i=0; i<=f-1; i++)
    {
        s3[i]=s1[i];
    }
    strcat(s3,s2);
    for(i=f,j=0; is1); i++,j++)
    {
        s4[j]=s1[i];
    }
    for(i=0; i
    {
        s5[i]=s3[i];
    }
    strcat(s5,s4);
    for(i=0; i
    {
        printf("%c",s5[i]);
    }
    return 0;
 }


样例输入:
BEIJING
123
3
样例输出:
BEI123JING

把定义的数组都初始化一下,a[100]={0}这样,全都初始化一下

修改如下,供参考:

#include<stdio.h>
#include<string.h>
int main(void)
{
    int f, i, j;
    char s1[100], s2[100], s3[100], s4[100], s5[100];
    gets(s1);
    gets(s2);
    scanf("%d", &f);
    for (i = 0; i < f; i++) // for(i=0; i<=f-1; i++) 修改
    {
        s3[i] = s1[i];
    }
    s3[i] = '\0';
    strcat(s3, s2);
    for (i = f, j = 0; i < strlen(s1); i++, j++)
    {
        s4[j] = s1[i];
    }
    s4[j] = '\0';
    //for (i = 0; i < strlen(s3); i++) 修改
    //{
    //    s5[i] = s3[i];
    //}
    strcat(s3, s4);
    printf("%s", s3);
    //for (i = 0; i < strlen(s5); i++) 修改
    //{
    //    printf("%c", s5[i]);
    //}
    return 0;
}