【发布时间】:2014-11-01 15:23:08
【问题描述】:
我有一个 char 数组并在其中存储了短整数:
char buf[50];
short int num = 12;
用 memcpy 填充它:
memcpy(buf, &num, 50);
然后我尝试将其打印出来:
for(i=0; i <50;i++) {
printf("%hd|",buf[i]);
}
我认为%hd 应该是打印出来的正确说明符。但我的输出如下:
12|0|0|0|0|0|0|0|12|0|0|0|0|0|0|0|12|0|0|0|0|0|0|0 |12|0|0|0|0|0|0|0|12|0|0|0|0|0|0|0|12|0|0|0|0|0|0|0|12 |0|
我的内容之间似乎是 7 字节空间(12)。但我想将 "12" 存储在每个字节中。应该可以在 char 数组中存储和缩短,我的意思是 1 个字节的最大表示是 256。我做错了什么? ... 寻找一些好的建议 =)
在linux下开发。
【问题讨论】:
-
@GrzegorzSzpetkowski,目的地是buf,不是num
-
您编译时是否包含所有警告和调试信息 (
gcc -Wall -Wextra -g)?如果你这样做了,编译器会警告你的! -
我没有收到任何警告 mhh