strcmp函数原型:int strcmp(const *ch str1,const *char str2)
若str1=str2,则返回0;若str1<str2,则返回负数;若str1>str2,则返回正数
例如:str1=str2
#include <stdio.h>
#include <string.h>
#include <assert.h>
int main(){
char *p1 = "hello";
char *p2 = "hello";
int ret =strcmp(p1,p2);
printf("ret = %d\n",ret);
return 0;
}
输出结果:
ret = 0
str1>str2
char *p1 = "hello2";
char *p2 = "hello1";
输出结果:
ret = 1
str1<str2
char *p1 = "hello1";
char *p2 = "hello2";
输出结果:
ret = -1
实现strcmp函数:
int myStrcmo(char *p1,char *p2){
int ret= 0;
int n_str1 = 0;
int n_str2 = 0;
char *bakStr1 = str1;
char *bakStr2 = str2;
while(*str1 && *str2 &&(*str1 == *str2)){ //str1,str2如果有相同的字符直接跳过
str1++;
str2++;
}
if(*str1 || *str2){ //str1,str2不是空的时,把str1和str2中的字符相加
str1 = bakStr1;
str2 =bakStr2;
while(*str1){
n_str1 +=*str1;
str1++;
}
while(*str2){
n_str2 +=str2;
str2++;
}
}
ret = n_str1-n_str2; //根据相加结果之差判断字符串谁大谁小
if(ret<0){
ret = -1;
}
if(ret=0){
ret = 0;
}
if(ret>0){
ret = 1;
}
return ret;
}
strncmp函数原型:int strncmp(const *char str1,const *char s2,size_t n)
比较str1和str2,最多比较前n个字节,若str1和str2的前n个字节相同则返回0;若str1>str2,则返大于0的值;若str1<str2,则返回小于0的值