两个数组值赋给新的数组出错


#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);               //输入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;
}

img


为什么输出的数组后面一直有烫字呢,该怎么修改?
注意,要输出的数组里要有前两个数组中的值,且按照顺序输出。
(如A[2]=12,
B[3]=Acd,
C[5]=12Acd)

要先把数组 c 清空,%s格式输出要碰到 '\0' 才结束的。
还有,a和b就是数组地址,scanf里面不需要取地址 &

#include <stdio.h>

int main()
{
    char a[10], b[10],c[20]={0};
    int j;
    scanf("%s%s", a,b);               //输入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;
}

c初始化时要清零下,其他的没啥了

 
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int main()
{
   
    char a[10], b[10],c[20]={0};
    int j; 
    scanf("%s%s", &a,&b);               //输入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;
}

你可以试试直接打印一个没有赋值的数组,比如说:
char c[20];
printf("%s", c);

你需要加个空格

scanf("%s %s", &a,&b);