首页 > 解决方案 > 如何将 char[] 写入结构?

问题描述

我有这样的结构名称

#define SETA_NAME "SETA"
#define SETB_NAME "SETB"
#define SETC_NAME "SETC"
#define SETD_NAME "SETD"
#define SETE_NAME "SETE"
#define SETF_NAME "SETF"

这样的结构

struct set
{
    char name[SET_NAME_LENGTH + 1];
    unsigned int input[INPUT_ARR_SIZE];
};

typedef struct set SETA, SETB, SETC, SETD, SETE, SETF;

这是我尝试执行的代码

    SETA setA;
    memcpy(setA.name, SETA_NAME, sizeof(SETA_NAME));
    SETB setB;
    memcpy(setA.name, SETB_NAME, sizeof(SETB_NAME));
    SETC setC;
    memcpy(setA.name, SETC_NAME, sizeof(SETC_NAME));
    SETD setD;
    memcpy(setA.name, SETD_NAME, sizeof(SETD_NAME));
    SETE setE;
    memcpy(setA.name, SETE_NAME, sizeof(SETE_NAME));
    SETF setF;
    memcpy(setA.name, SETF_NAME, sizeof(SETF_NAME));

    printf("\nNAME : %s", setA.name);
    printf("\nNAME : %s", setB.name);
    printf("\nNAME : %s", setC.name);
    printf("\nNAME : %s", setD.name);
    printf("\nNAME : %s", setE.name);
    printf("\nNAME : %s", setF.name);

但输出不像我期望的那样

NAME : SETF
NAME : 
NAME : 
NAME : 
NAME : d?v
NAME : 

我做错了什么?

标签: c

解决方案


您每次都复制到同一个结构中。

memcpy(setA.name, SETA_NAME, sizeof(SETA_NAME));
       ^^^^^^^^^
memcpy(setA.name, SETB_NAME, sizeof(SETB_NAME));
       ^^^^
memcpy(setA.name, SETC_NAME, sizeof(SETC_NAME));
       ^^^^
memcpy(setA.name, SETD_NAME, sizeof(SETD_NAME));
       ^^^^
memcpy(setA.name, SETE_NAME, sizeof(SETE_NAME));
       ^^^^
memcpy(setA.name, SETF_NAME, sizeof(SETF_NAME));
       ^^^^

推荐阅读