У меня есть эта переменная,
unsigned char identifier1[12];
когда я использую этот идентификатор с приведением к
const uint8_t*
лайк
const uint8_t* getIdentifier() {return identifier1; }
и я получаю в функции:
unsigned char *zid
и я хочу сравнить их оба, поэтому я использую это memcmp(identifier1, zid, 12);
И ответ 0, так что они оба равны …
но когда я печатаю значение:
__android_log_print(ANDROID_LOG_INFO, "MyTag", "%d %d",(int)identifier1,(int)zid);
Я получаю разные значения в обоих … как 1711428512 1652772888
, но memcmp
дает ответ на запись … Как я могу напечатать значения, чтобы получить правильное значение обоих?
Вы печатаете значение указателя обоих массивов, которое отличается. memcmp()
сравнивает содержимое этих массивов, а не указателей.
Когда вы печатаете массив / указатель таким образом, вы печатаете адрес данных. Если вы хотите распечатать данные, вы можете использовать% s, если оба они заканчиваются нулем.
memcmp не сравнивает местоположение массива с указателем, он сравнивает данные по адресу. Таким образом, если он возвращает 0, печать данных по обоим адресам должна привести к одинаковым строкам.