【发布时间】:2014-10-27 23:12:32
【问题描述】:
unsigned char kk[16] = {129, 254, 139, 254, 135, 87, 108, 62, 203, 34, 66, 111, 142, 87, 132, 115};
unsigned char kkf[20] = {24, 165, 227, 127, 183, 90, 60, 22, 128, 165, 7, 52, 151, 238, 69, 203, 42, 213, 220, 57};
printf("strlen kk: %d\n", strlen(kk)); //should be 16
printf("strlen kkf: %d\n", strlen(kkf) //should be 20
输出是
strlen kk: 16
strlen kkf: 22 //insane????????
为什么kkf[20]的长度是22?明显是20吗?我在Linux上编译它。发生了什么?提前致谢。
【问题讨论】:
-
您滥用了
strlen并调用了未定义的行为。它用于测量 strings(NUL 终止字符序列)的长度,而不是任意数组。
标签: c arrays linux char strlen