c语言函数实现奇数位上的字符输出,为何出现乱码

/c10-2-10/
#include<stdio.h>
#define N 10
void fun(char str1[],char str2[])
{
int i,j;
j=0;
for(i=0;str1[i]!='\0';i=i+2)
{
str2[j]=str1[i];
j=j+1;
}
for(i=0;str2[i]!='\0';i++)
printf("%c",str2[i]);
}
int main()
{
char a[N],b[N]={0};
printf("请输入一串字符:");
gets(a);
fun(a,b);
return 0;
}


#include<stdio.h>
#define N 10
void fun(char str1[], char str2[])
{
    int i, j;
    j = 0;
    str2[N] = { 0 };
    for (i = 0; str1[i] != '\0'; i = i + 2)
    {
        str2[j] = str1[i];
        j = j + 1;
    }
    str2[j] = '\0';
    for (i = 0; str2[i] != '\0'; i++)
        printf("%c", str2[i]);
}
int main()
{
    char a[N] = {0}, b[N];
    printf("请输入一串字符:");
    gets(a);
    fun(a, b);
    return 0;
}

判断输入的字符串长度是否等于1;等于1会乱码

#include<stdio.h>
#include<string.h>
#define N 10
void fun(char str1[],char str2[])
{
    int i,j;
    j=0;
    for(i=0; str1[i]!='\0'; i=i+2)
    {
        str2[j]=str1[i];
        j=j+1;
    }
    for(i=0; str2[i]!='\0'; i++)
        printf("%c",str2[i]);
}
int main()
{
    char a[N],b[N]= {0};
    printf("请输入一串字符:");
    gets(a);
    if(strlen(a)==1)
    {
        printf("%c",a[0]);
        return 1;
    }
    else
    {
        fun(a,b);
    }
    return 0;
}

没啥问题啊

img