c - 如何将 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 :
我做错了什么?
解决方案
您每次都复制到同一个结构中。
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));
^^^^
推荐阅读
- acumatica - 在选择器控制方面需要帮助
- python - 在 tkinter 中重新创建从左到右的滚动文本
- javascript - 当 contentEditable div 中有选择时如何触发事件?
- azure - 为什么 App Insights NUGET 添加 2 个 AdapativeSamplingTelemetryProcessor 节点?
- python-3.x - 为什么我尝试提交问题时我的输出值与预期值不一样
- angular - 如何在 Spring Boot 中通过 spring rest 控制器发送音频?
- angular - 如何删除currencyMask的“0.00”格式,让用户输入任意数字?
- android - 如何从首选项中保存和加载具有多种类型条目的列表视图的条目?
- javascript - 创建一个跟随光源的日/夜着色器
- javascript - 存储租赁类型、租赁期限、租赁范围以获得正确租赁率的正确 JavaScript 数据结构是什么?