C/C++ strncmp 用法與範例

本篇 ShengYu 介紹 C/C++ strncmp 用法與範例,strncmp 是用來作字串比較的函式,除了可以用來判斷兩個字串是否相同以外,還可以判斷兩字串前 n 個字元是否相等,以下介紹如何使用 strncmp 函式。

C/C++ 要判斷 c-style 字串前 n 個字元是否相同可以使用 strncmp,要使用 strncmp 的話需要引入的標頭檔 <string.h>,如果要使用 C++ 的標頭檔則是引入 <cstring>
strncmp 函式原型為

1
int strncmp(const char * str1, const char * str2, size_t num);

strncmp() 如果判斷兩字串相同的話會回傳 0,這必須牢記因為很容易混搖,很多程式 bug 就是這樣產生的,所以 if (strncmp(str1, str2, strlen(str1))) printf("not equal\n"); 這樣寫的話結果會是 not equal 唷!來看看下面的 strncmp 用法範例吧!

cpp-strncmp.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// g++ cpp-strncmp.cpp -o a.out
#include <stdio.h>
#include <string.h>

int main() {
const char *str1 = "hello world";
const char *str2 = "hello world";

if (strncmp(str1, str2, strlen(str1)) == 0) {
printf("equal\n");
} else {
printf("not equal\n");
}

return 0;
}

結果如下,

1
equal

再來看看字串不相同的例子,strncmp 是大小寫都判斷不同的,

cpp-strncmp2.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// g++ cpp-strncmp2.cpp -o a.out
#include <stdio.h>
#include <string.h>

int main() {
const char *str1 = "hello world";
const char *str2 = "HELLO WORLD";

int ret = strncmp(str1, str2, strlen(str1));
if (ret > 0) {
printf("str1 is greater than str2\n");
} else if (ret < 0) {
printf("str1 is less than str2\n");
} else { // ret == 0
printf("str1 is equal to str2\n");
}

return 0;
}

結果如下,

1
str1 is greater than str2

再來判斷兩字串前 n 個字元是否相同,以下範例是判斷兩字串前 6 個字元是否相同,

cpp-strncmp3.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// g++ cpp-strncmp3.cpp -o a.out
#include <stdio.h>
#include <string.h>

int main() {
const char *str1 = "hello world";
const char *str2 = "hello WORLD";

if (strncmp(str1, str2, 6) == 0) {
printf("equal\n");
} else {
printf("not equal\n");
}

return 0;
}

結果如下,

1
equal

以上就是 C/C++ strncmp 的用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它參考
strncmp - C++ Reference
https://www.cplusplus.com/reference/cstring/strncmp/

其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ 新手入門教學懶人包
C/C++ 字串比較的3種方法
C/C++ strcmp 用法與範例
C/C++ memcmp 用法與範例