一、strncmp和strcmp區別
strncmp函數與strcmp函數不同之處在於,strcmp函數比較的兩個字符串是從頭開始逐個字符逐個字符比較,而strncmp函數則是比較前n個字符是否相等,即可以只比較字符串的一部分。因此,在需要比較字符串的一部分時,strncmp函數比strcmp函數更加實用。
二、strcmp函數用法
strcmp函數用於比較兩個字符串的大小關係,該函數用於比較兩個字符串是否相等,如果兩個字符串相等,則strcmp函數返回0,如果第一個字符串的值比第二個字符串的值小,則strcmp函數返回小於0的值,相反就返回大於0的值。
#include <stdio.h>
#include <string.h>
int main () {
char str1[15];
char str2[15];
int ret;
strcpy(str1, "abcdef");
strcpy(str2, "ABCDEF");
ret = strcmp(str1, str2);
if(ret 0) {
printf("str1 大於 str2");
} else {
printf("str1 等於 str2");
}
return(0);
}
三、strncmp函數的用法
strncmp函數用於比較字符串的前n個字符是否相等,函數簽名為:
int strncmp(const char *str1, const char *str2, size_t n);
其中,str1和str2分別為要比較的兩個字符串,n為要比較的字符數目。
以下為strncmp函數的一個例子
#include <stdio.h>
#include <string.h>
int main()
{
char str1[15];
char str2[15];
int ret;
strcpy(str1, "abcdef");
strcpy(str2, "abcdeg");
ret = strncmp(str1, str2, 5);
if(ret 0){
printf("str1 大於 str2");
}else{
printf("str1 等於 str2");
}
return 0;
}
四、strncmp與strstr實現字符串匹配
strncmp函數可以用於實現字符串的匹配,特別是在搜索字符串時比較有用。下面的例子使用了strncmp和strstr函數實現字符串的匹配。
#include <stdio.h>
#include <string.h>
int main()
{
char str1[15] = "hello, world!";
char str2[15] = "world";
char *ret;
ret = strstr(str1, str2);
if(ret){
printf("找到了:%s\n", ret);
}else{
printf("沒找到\n");
}
if(strncmp(ret, str2, strlen(str2)) == 0){
printf("匹配成功\n");
}else{
printf("匹配失敗\n");
}
return 0;
}
五、strncmp用於忽略大小寫的字符串比較
在需要比較字符串但是大小寫不確定的場合,可以使用strcasecmp函數代替strcmp函數。以下為實現代碼:
#include <stdio.h>
#include <string.h>
int main() {
char str1[15] = "ABC";
char str2[15] = "abc";
int ret;
ret = strcasecmp(str1, str2);
if(ret 0){
printf("str1 大於 str2");
}else{
printf("str1 等於 str2");
}
return 0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/247837.html
微信掃一掃
支付寶掃一掃