【发布时间】:2018-07-30 07:15:43
【问题描述】:
我正在尝试一个基本程序来将元素从一个数组复制到另一个数组。源数组有更多元素。在将元素从源复制到目标时,我只从源数组中复制少量元素。
我的源数组包含一些十六进制值。
当我以十六进制形式打印目标数组时,最后一个元素是不同的。即元素在不知不觉中加起来ffffff
这里是示例程序
void String_Copy(char *src, char *dest, int length)
{
for (int i=0; i<length; i++)
{
dest[i] = src[i];
}
}
int main(void)
{
char firstStr[] = {0x01,0x03,0x02,0x13,0x88,0xB5,0x12};
char secStr[5];
String_Copy(firstStr,secStr,5);
for (int i=0;i<5;i++)
{
printf("%02x ",secStr[i]);
}
}
这里我只想复制五个元素并打印输出。
预期输出:01 03 02 13 88
获取输出:01 03 02 13 ffffff88
这些ffffff来自哪里???
幕后发生了什么????
提前致谢
【问题讨论】:
-
好的会记住这一点(谢谢)。
-
将char的数据类型设为unsigned char并打印数组?
-
是的,它在使用 unsigned 后可以工作,我知道为什么会这样。
标签: c