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终止字符序列)的长度,而不是任意数组。 – 5gon12eder 2014-10-27 23:14:33