- This wiki is out of date, use the continuation of this wiki instead
Memcmp
From FenixWiki
Contents |
Definition
INT memcmp ( <VOID POINTER ptr1> , <VOID POINTER ptr2> , <INT number> )
Compares the first number bytes of the block of memory pointed by ptr1 to the first number bytes pointed by ptr2, returning zero if they all match or a value different from zero representing which is greater if they do not.
Parameters
| VOID POINTER ptr1 | - Pointer to a block of memory |
| VOID POINTER ptr2 | - Pointer to a block of memory. |
| INT number | - The number of bytes to be checked. |
Returns
INT : Difference
| 0 | - The blocks of memory are identical. |
| >0 | - The first differing byte in both memory blocks has a greater value in ptr1. |
| <0 | - The first differing byte in both memory blocks has a greater value in ptr2. |
A byte ranges from 0 to 255, meaning 189 is a greater value than 105.
Example
Program example;
Const
elements = 10;
End
Private
byte pointer pbyte1;
byte pointer pbyte2;
int result;
End
Begin
// Allocate memory
pbyte1 = alloc(elements);
pbyte2 = alloc(elements);
// Make the blocks the same and compare
memset(pbyte1,3,elements);
memset(pbyte2,3,elements);
result = memcmp(pbyte1,pbyte2,elements); // You can also compare the first 5 bytes, or the first elements/2 bytes,
// it depends on what you want.
say("Memcmp 1: " + result);
// Make the first block have a greater value and compare
pbyte1[0] = 4;
result = memcmp(pbyte1,pbyte2,elements);
say("Memcmp 2: " + result);
// Make the blocks the same and compare
pbyte2[0] = 4;
result = memcmp(pbyte1,pbyte2,elements);
say("Memcmp 3: " + result);
// Make the first block have a greater value and compare
pbyte2[1] = 5;
result = memcmp(pbyte1,pbyte2,elements);
say("Memcmp 4: " + result);
Repeat
frame;
Until(key(_esc))
// Free the used memory
free(pbyte1);
free(pbyte2);
End
