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