一、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-hk/n/247837.html