我正在尝试将 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/