gpt4 book ai didi

c - 如何写入缓冲区(空指针)?

转载 作者:太空狗 更新时间:2023-10-29 11:27:50 25 4
gpt4 key购买 nike

我想将 2 个字符和一个位 vector (uint64_t) 写入文件,但我首先必须将它们全部写入缓冲区。然后缓冲区将被写入文件。我应该如何将这 3 个变量写入缓冲区(空指针),以便所有变量都包含在一个(空指针)变量中。

比如我要写

char a = 'a';
char b = 'b';
uint64_t c = 0x0000111100001111;

进入

void *buffer = malloc(sizeof(char)*2+sizeof(uint64_t));

然后使用

将其写入文件
write(fd, buffer, sizeof(char)*2+sizeof(uint64_t));

最佳答案

这是(几乎*)完全安全的做法:

uint8_t *buffer = malloc(2 + sizeof(uint64_t));
buffer[0] = a;
buffer[1] = b;
memcpy(buffer + 2, &c, sizeof(c));

您可能想做类似 *(uint64_t *)(buffer + 2) = c; 的操作,但由于对齐限制,这不可移植。

请注意,根据 C 标准中的定义,sizeof(char) == 1

(*) 我假定了 8 位 char,这几乎是通用的,但并非完全通用;在具有 16 位 char 的平台上,对 ab 也使用 memcpy

关于c - 如何写入缓冲区(空指针)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625707/

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