c - memcpy() 将整数值复制到字符缓冲区

标签 c memory pointers memcpy

我正在尝试将 int 的内存值复制到 char 缓冲区中。代码如下所示,

#define CPYINT(a, b) memcpy(a, &b, 4)
............

char str1[4];
int i = 1;
CPYINT(str1, i);
printf("%s",s);

...........

当我打印 str1 时,它是空白的。请澄清。

最佳答案

您正在将整数的字节表示形式复制到 char 数组中。然后你要求 printf 将这个数组解释为一个空终止字符串:str1[0] 为零,你实际上是在打印一个空字符串(我跳过了 endianness 的谈话在这里)。

你期待什么?显然,如果您想打印整数 i 的文本表示,您应该使用 printf("%d", i)

关于c - memcpy() 将整数值复制到字符缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4202528/

相关文章:

c - 如果程序有 `-I`语句,是否需要在 `gcc`中使用 `#include`标志?

c++ - 我们可以用C或C++手动操作垃圾收集器吗?

c - C中数组指针的奇怪行为

c - 指向指针衰减的数组是否更改为指针对象?

javascript - 内存:Java vs C++ vs JS

使用 C 编程使用 argc 和 argv 参数创建一个刽子手游戏程序

c++ - 取消引用指针的地址?

c - 保持 ssh 上的管道链打开

c - 在CGI程序中读取cookie时,只检索第一行

c - 如何在给定获得其中一个数字的概率的范围内生成随机数