- This wiki is out of date, use the continuation of this wiki instead
Memcmp
From FenixWiki
(Difference between revisions)
| Revision as of 15:13, 13 May 2007 (edit) Sandman (Talk | contribs) ← Previous diff |
Revision as of 11:08, 14 May 2007 (edit) (undo) Sandman (Talk | contribs) m Next diff → |
||
| Line 6: | Line 6: | ||
| 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. | 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. | ||
| + | |||
| + | ''Available since [[Fenix]] version [[0.92]].'' | ||
| == Parameters == | == Parameters == | ||
Revision as of 11:08, 14 May 2007
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.
Available since Fenix version 0.92.
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
