strcmp
字符串比较
库函数内的声明
int strcmp ( const char * str1, const char * str2 );
简单例子:
#include<stdio.h>
#include<string.h>
int main()
{
char* p1="abcdef";//p1拿到的是a的地址
char* p2="sqwer";//p2拿到的是b的地址
if(strcmp(p1,p2)>0)
{
printf("p1>p2");
}
else if(strcmp(p1,p2)==0)
{
printf("p1=p2");
}
else
{
printf("p1<p2");
}
return 0;
}
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字
例子解释如何进行字符串比较
abcf\0
abce\0
1.ASCII码下,'a'=='a'比较下一对
2.ASCII码下,'b'=='b'比较下一对
3.ASCII码下,'c'=='c'比较下一对
4.ASCII码下,'f'>'e',第一个ASCII码大,返回大于1的数据
abc\0
abc\0
1.ASCII码下,'a'=='a'比较下一对
2.ASCII码下,'b'=='b'比较下一对
3.ASCII码下,'c'=='c'比较下一对
4.ASCII码下,'\0'=='\0',ASCII码相同,返回0的数据
abc\0
abcd\0
1.ASCII码下,'a'=='a'比较下一对
2.ASCII码下,'b'=='b'比较下一对
3.ASCII码下,'c'=='c'比较下一对
4.ASCII码下,'\0'<'d',第二个ASCII码大,返回小于1的数据my_strcat自我实现
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char* str1,const char* str2)
{
assert(str1&&str2);
while(*str1==*str2)
{
if(*str1=='\0')
{
return 0;
}
str1++;
str2++;
}
return (*str1-*str2);
}
int main()
{
char* p1="abcdef";//p1拿到的是a的地址
char* p2="sqwer";//p2拿到的是b的地址
int ret=my_strcmp(p1,p2);
printf("%d\n",ret);
return 0;
}