C++ cstring memcmp() function
Example
Compare two blocks of memory to see which is greater:
char myStr1[] = "ABCD";
char myStr2[] = "ABCE";
int cmp = memcmp(myStr1, myStr2, 4);
if(cmp > 0) {
cout << myStr1 << " is greater than " << myStr2 << "\n";
} else if(cmp < 0) {
cout << myStr2 << " is greater than " << myStr1 << "\n";
} else {
cout << myStr1 << " is equal to " << myStr2 << "\n";
}
Try it Yourself »
Definition and Usage
The memcmp()
function compares two blocks of memory and returns an integer indicating which one is greater.
For this comparison bytes at the same position from both memory blocks are compared one by one starting at position 0 until one of them does not match or the end of the block of memory has been reached. There are three possible scenarios:
- If the end of the memory blocks is reached without any mismatches then the function returns zero.
- At the first mismatch, if the value of the byte in the first memory block is greater then the function returns a positive number.
- At the first mismatch, if the value of the byte in the second memory block is greater then the function returns a negative number.
The memcmp()
function is defined in the <cstring>
header file.
Note: The memcmp()
function is generalized for memory of any type. When working with C-style strings (char
arrays) it is better to use the strcmp()
function instead.
Syntax
memcmp(void * pointer1, void * pointer2, size_t size);
The size_t
data type is a positive integer.
Parameter Values
Parameter | Description |
---|---|
pointer1 | Required. A pointer to one of the blocks of memory to be compared. |
pointer2 | Required. A pointer to one of the blocks of memory to be compared. |
size | Required. The number of bytes to compare. |
Technical Details
Returns: |
An int value which is positive if the first memory block is greater,
negative if the second memory block is greater and 0 if the two memory blocks are equal.
|
---|