gpt4 book ai didi

c - 如何创建多个以 null 结尾的 char 数组?

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:46 25 4
gpt4 key购买 nike

我有一个字符数组,我希望它有特定的格式,例如:

(first 4 bytes) block type
(next 4 bytes) error code
(next 32 bytes) email address
(next 64 bytes) home address
(next 32 bytes) Full Name

等等。大约 45 个不同的字段用 0 填充到字段大小。我可以使用 memcpy 并每次按字段大小推进指针,但这似乎是一项乏味的任务和丑陋的代码。也许是创建这种格式的更聪明、更优雅的方式?

最佳答案

你可以使用 unionstruct 来做到这一点:

#define BLOCK_TYPE_SIZE    4
#define ERROR_CODE_SIZE 4
#define EMAIL_ADDRESS_SIZE 32
#define HOME_ADDRESS_SIZE 64
#define FULL_NAME_SIZE 32

struct format_entry
{
char block_type[BLOCK_TYPE_SIZE];
char error_code[ERROR_CODE_SIZE];
char email_address[EMAIL_ADDRESS_SIZE];
char home_address[HOME_ADDRESS_SIZE];
char full_name[FULL_NAME_SIZE];
};

union format_union
{
char full_string[sizeof(struct format_entry)];
struct format_entry entry;
};

然后你可以这样填写:

union format_union f;
memset (f.full_string, 0, sizeof f.full_string);
strcpy (f.entry.block_type, "TYPE");
strcpy (f.entry.error_code, "CODE");
strcpy (f.entry.email_address, "EM@AI.L");
strcpy (f.entry.home_address, "ADDR");
strcpy (f.entry.full_name, "NA ME");

关于c - 如何创建多个以 null 结尾的 char 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35379963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com