一.strcmp()的简介
比较两个字符串真正内容,比较对应字符的ASCII码的值,引用的头文件#include<string.h>
strcmp()函数的声明:
int strcmp ( const char * str1, const char * str2 );
str1:字符串的首地址
str2:字符串的首地址
返回的类型是整形,如第一个字符串大于第二个字符串返回整形负数,如第一个字符串等于第二个字符串返回整形零,如第一个字符串小于第二个字符串返回整形正数
二.注意事项
1.字符串一定要有'\0',否则判断不了两字符串是否相等,例如
1. #include<stdio.h> 2. #include<string.h> 3. int main() 4. { 5. char arr[]={'a','b','c'}; 6. char brr[]={'a','b','c'}; 7. int ret=strcmp(arr,brr); 8. printf("%d\n",ret); 9. return 0; 10. }
结果:
我们可以把这段代码
char arr[]={'a','b','c'};
char brr[]={'a','b','c'};
改为:
char arr[]={'a','b','c','\0'};
char brr[]={'a','b','c','\0'};
或者
char arr[]="abcdef";
char brr[]="abcdef";
三.模拟实现strcmp()
1. #include<stdio.h> 2. int my_strcmp(char* s1,char* s2) 3. { 4. while(*s1==*s2) 5. { 6. if(*s1=='\0') 7. { 8. return 0; 9. } 10. s1++; 11. s2++; 12. } 13. // if(*s1>*s2) 14. // { 15. // return 1; 16. // } 17. // else 18. // { 19. // return -1; 20. // } 21. return *s1-*s2; 22. } 23. int main() 24. { 25. // char arr[]="abcdef"; 26. // char brr[]="abcdef"; 27. char arr[]={'a','b','c','\0'}; 28. char brr[]={'a','b','d','\0'}; 29. int ret=my_strcmp(arr,brr); 30. if(ret>0) 31. { 32. printf("arr>brr\n"); 33. } 34. else if(ret<0) 35. { 36. printf("arr<brr\n"); 37. } 38. else 39. { 40. printf("arr==brr\n"); 41. } 42. return 0; 43. }
运行结果: