C59-字符串比较函数strcmp
一 strcmp(strncmp)
-
函数原型:
int strcmp(const char *str1, const char *str2);
-
功能说明:
-
该函数按字符逐个比较
str1
和str2
(基于 ASCII 码值) -
比较过程持续到出现不同字符或遇到字符串结束符
'\0'
为止
-
-
返回值规则(不同编译器返回值可能不同):
-
若
str1
等于str2
,返回0
-
若
str1
大于str2
(第一个不同字符的 ASCII 码值更大),返回正整数 -
若
str1
小于str2
,返回负整数
-
-
注意
- 相较于strcmp,strncmp只比较前n个字符
- 两个函数均对大小写敏感
-
Example:
#include <stdio.h> #include <string.h> int main() {char *ptr1="Hello Warld";char *ptr2="Hello World";char *ptr3="Hello World";int result1=strcmp(ptr1,ptr2);printf("RET1:%d\n",result1);int result2=strcmp(ptr2,ptr1);printf("RET2: %d\n",result2);int result3=strcmp(ptr2,ptr3);printf("RET3: %d\n",result3);return 0; }
-
Show:
二 手搓strcpm
-
Example:
#include <stdio.h> #include <string.h>int MyStrcmp(char *str1,char *str2) {int result=0;while (*str1&&*str2&&(*str1==*str2)){str1++;str2++;}result=*str1-*str2;if(result<0)result=-1;else if(result>0)result=1;return result; }int main() {char *ptr1="Hello Warld";char *ptr2="Hello World";char *ptr3="Hello World";int result1=MyStrcmp(ptr1,ptr2);printf("RET1:%d\n",result1);int result2=MyStrcmp(ptr2,ptr1);printf("RET2: %d\n",result2);int result3=MyStrcmp(ptr2,ptr3);printf("RET3: %d\n",result3);return 0; }
-
Show: