- 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