码
unsigned char mac[6];
memset(mac,'\0',sizeof(mac));

问题:为什么我在一次显示MAC内存内容时只得到5 \0000?但所有元素都是完全空的。
我试着用其他字符来设置它,比如@或$等等。它只有6个字符,而不是5个字符。
这是一个带有cgdb的bug吗?
发布于 2016-04-26 09:07:47
看起来您的调试器将其作为字符串处理一半,将其处理为数组。
您可以很清楚地看到,有六个数组元素,mac[0]通过mac[5]。
但是,由于mac行已经决定要输出一个字符串,所以它将最终的\0视为所述字符串的空终止符。在C世界中,第一个这样的\0将被认为是字符串的结尾。
至于它是否是一个bug,这取决于调试器文档的声明。如果它声明它将输出C风格的字符串,那么,是的,它似乎是一个bug。
如果没有这样说,它可以作为一个执行决定,或最坏的,一个弱点。
https://stackoverflow.com/questions/36699664
复制相似问题