У меня есть два неподписанных массивы символов одного и того же размера и, если заявление, которое проверяет, чтобы увидеть, если они равны:Memcmp, кажется, дает мне неправильное возвращаемое значение
#define BUFFER_SIZE 10000
unsigned char origChar[BUFFER_SIZE];
unsigned char otherChar[BUFFER_SIZE];
//Yes, I know this is unnecessary
memset(origChar,'\0',BUFFER_SIZE);
memset(otherChar,'\0',BUFFER_SIZE);
. . .
if(memcmp(origChar,otherChar,offset))
{
. . .
}
Когда я исследую два массива в БГД, я получаю следующее:
(gdb) p origChar
$1 = '\000' <repeats 9999 times>
(gdb) p otherChar
$2 = '\000' <repeats 9999 times>...
(gdb) p memcmp(otherChar,origChar,offset)
$3 = 1
Однако, если я уменьшаем offset
1, я получаю следующее:
(gdb) p memcmp(otherChar,origChar,offset-1)
$4 = 0
(gdb) p offset
$5 = 10000
Это не имеет для меня никакого смысла. GDB в основном говорит, что они полностью равны, так почему бы уменьшить число offset
одним изменением?
Почему 'offset' отличается от' BUFFER_SIZE'? – ouah
Значение 'offset' предназначено для изменения, но в этом случае' BUFFER_SIZE' и 'offset' имеют эквивалентное значение 10000. – Sky
Каково значение' offset'? Какова ценность 'BUFFER_SIZE'? – PaulMcKenzie