原型:extern int strcmp(const char *s1,const char * s2);
所在头文件:string.h
功能:比较字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
说明:
当s1<s2时,返回值<0
当s1==s2时,返回值=0
当s1>s2时,返回值>0
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
2.函数源码
int __cdecl strcmp (
const char * src,
const char * dst
)
{
Int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst&&*src)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
3.
一种实现:
- #include<stdio.h>
- int strcmp(const char *str1,const char *str2)
- {
- /* 注释以下的五行(while循环)可以简写为:
- * for(;(*str1==*str2)&&*str1!='\0';str1++,str2++);
- * */
- while((*str1==*str2)&&*str1!='\0')
- {
- str1++;
- str2++;
- }
- if(*str1=='\0'&&*str2=='\0') return 1;
- else return -1;
- }
- int main()
- {
- char *st1="abdefg";
- char *st2="abcdefg";
- printf("%d\n",strcmp(st1,st2));
- char *st3="12345";
- char *st4="12345";
- printf("%d\n",strcmp(st3,st4));
- return 0;
- }