将两个原数组的值按顺序赋给一个新的数组

#define _CRT_SECURE_NO_WARNINGS 1
#include 
int main()
{
    char a[10], b[10], c[20];
    int j; 
    scanf("%s%s", &a,&b);
    int sz1 = sizeof(a) / sizeof(a[0]);
    int sz2 = sizeof(b) / sizeof(b[0]);
    for (j = 0; j < sz1; j++) 
    {
        c[j] = a[j];
    }
    for (j = 0; j < sz2; j++) 
    {
        c[sz1 + j] = b[j];
    }
    printf("%s", c);
    return 0;
}

为什么上面不能将两个原数组的值按先后顺序赋给新数组呢?就比如a[2]=12,b[3]=abc,c[5]=12abc


#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int main()
{
    char a[10], b[10], c[20];
    int j; 
    scanf("%s%s", &a,&b);
    int sz1 = strlen(a) ;
    int sz2 = strlen(b) ;
    for (j = 0; j < sz1; j++) 
    {
        c[j] = a[j];
    }
    for (j = 0; j < sz2; j++) 
    {
        c[sz1 + j] = b[j];
    }

    printf("%s", c);
    return 0;
}

用这个函数,那个函数可能把\0也包含在长度里面了

img

img

img

你在计算之前,好不好先把a和b打印出来看看里面到底存了个啥?