首页 > 解决方案 > 如何将 int 存储在由 malloc 分配的 char * 中

问题描述

我试图将一个 int 值(所有 4 个字节)存储到一个char *中:

所以,我想将完整值,即 int 变量的所有字节(全部 4 个)存储到 char 中,这样我就用完了 512 个字节中的 4 个字节。我也应该能够读回我分配的值。我尝试使用很多东西,但无法弄清楚这一点。

这适用于我的 LFS(日志文件系统),我尝试使用数据碎片将文件存储到磁盘上的数据块中

char *c = malloc(512);
int value = 4096;

标签: c

解决方案


您可以复制到指向的缓冲区中c

memcpy(c, &value, sizeof(value));

如果要在其后写入另一个值,可以将偏移量添加到c

memcpy(c + sizeof(value), &value2, sizeof(value2));  // adds value2 at an offset right after value

要读取该值,您可以将其复制到不同的变量中:

int readVal;
memcpy(&readVal, c, sizeof(readVal));

推荐阅读