本篇 ShengYu 介紹 C/C++ memcmp 用法與範例,memcmp 是用來判斷兩段記憶體區塊內容是否相同的函式,以下介紹如何使用 memcmp 函式。
C/C++ 要判斷 c-style 字串是否相等可以使用 memcmp,要使用 memcmp 的話需要引入的標頭檔 <string.h>
,如果要使用 C++ 的標頭檔則是引入 <cstring>
,
memcmp 函式原型為1
int memcmp(const char * ptr1, const char * ptr2, size_t num);
memcmp()
如果判斷兩段記憶體區塊內容相同的話會回傳 0,這必須牢記因為很容易混搖,很多程式 bug 就是這樣產生的,所以 if (memcmp(buffer1, buffer2, sizeof(buffer1)) printf("not equal\n");
這樣寫的話結果會是 not equal 唷!來看看下面的 memcmp 用法範例吧!1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19// g++ cpp-memcmp.cpp -o a.out
int main() {
char buffer1[] = "abcde";
char buffer2[] = "abcde";
int ret = memcmp(buffer1, buffer2, sizeof(buffer1));
if (ret > 0) {
printf("buffer1 is greater than buffer2\n");
} else if (ret < 0) {
printf("buffer1 is less than buffer2\n");
} else { // ret == 0
printf("buffer1 is equal to buffer2\n");
}
return 0;
}
結果如下,1
buffer1 is equal to buffer2
再來看看兩段記憶體區塊不相同的例子,memcmp 是大小寫都判斷不同的,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19// g++ cpp-memcmp2.cpp -o a.out
int main() {
char buffer1[] = "abcde";
char buffer2[] = "ABCDE";
int ret = memcmp(buffer1, buffer2, sizeof(buffer1));
if (ret > 0) {
printf("buffer1 is greater than buffer2\n");
} else if (ret < 0) {
printf("buffer1 is less than buffer2\n");
} else { // ret == 0
printf("buffer1 is equal to buffer2\n");
}
return 0;
}
結果如下,1
buffer1 is greater than buffer2
再來判斷兩段記憶體區塊前 n 個內容是否相等,以下範例是判斷兩段記憶體區塊前 3 個字元是否相同,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19// g++ cpp-memcmp3.cpp -o a.out
int main() {
char buffer1[] = "abcde";
char buffer2[] = "abcDE";
int ret = memcmp(buffer1, buffer2, 3);
if (ret > 0) {
printf("buffer1 is greater than buffer2\n");
} else if (ret < 0) {
printf("buffer1 is less than buffer2\n");
} else { // ret == 0
printf("buffer1 is equal to buffer2\n");
}
return 0;
}
結果如下,1
buffer1 is equal to buffer2
以上就是 C/C++ memcmp 的用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!
其它參考
memcmp - C++ Reference
https://www.cplusplus.com/reference/cstring/memcmp/
其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ 新手入門教學懶人包
C/C++ 字串比較的3種方法
C/C++ strcmp 用法與範例
C/C++ memcpy 用法與範例
C/C++ memset 用法與範例