memcmp函數是C語言中的庫函數,用于比較兩個內存塊的內容。
該函數的原型如下:
int memcmp(const void* ptr1, const void* ptr2, size_t num);
其中,ptr1
和ptr2
是要比較的內存塊的起始地址,num
是要比較的字節數。
函數返回值有三種情況:
如果ptr1
和ptr2
指向的內存塊內容相等,則返回0;
如果ptr1
指向的內存塊內容大于ptr2
指向的內存塊內容,則返回一個正數;
如果ptr1
指向的內存塊內容小于ptr2
指向的內存塊內容,則返回一個負數。
以下是一個使用memcmp
函數的例子:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "Hello";
char str3[] = "World";
int result1 = memcmp(str1, str2, sizeof(str1));
int result2 = memcmp(str1, str3, sizeof(str1));
if (result1 == 0) {
printf("str1 and str2 are equal.\n");
} else {
printf("str1 and str2 are not equal.\n");
}
if (result2 > 0) {
printf("str1 is greater than str3.\n");
} else if (result2 < 0) {
printf("str1 is less than str3.\n");
} else {
printf("str1 and str3 are equal.\n");
}
return 0;
}
輸出結果為:
str1 and str2 are equal.
str1 is less than str3.
注意,memcmp
函數比較的是內存塊的內容,而不是字符串的內容,因此在比較字符串時需要考慮字符串的結束符\0
。通常使用sizeof
運算符獲取內存塊的大小來保證比較的字節數正確。