#include<string.h>
#include<stdio.h>
int main(int argc,char *argv[])
{
char *s1 = argv[1];
char *s2 = argv[2];
int r;
int len1 = strlen(s1);
int len2 = strlen(s2);
int len3 = len1>len2 ?len1:len2;
r = memcmp(s1,s2,len3);
if(!r)
printf("s1 and s2 are identical\n");/*s1等于s2*/
else if(r<0)
printf("s1 is less than s2\n");/*s1小于s2*/
else
printf("s1 is greater than s2\n");/*s1大于s2*/
return 0;
}
s1,s2为字符串时候memcmp(s1,s2,1)就是比较s1和s2的第一个字节的ascII码值;
memcmp(s1,s2,n)就是比较s1和s2的前n个字节的ascII码值;
如:char *s1="abc";
char *s2="acd";
int r=memcmp(s1,s2,3);
就是比较s1和s2的前3个字节,第一个字节相等,第二个字节比较中大小已经确定,不必继续比较第三字节了
memcmp源码:
#include <string.h>
int memcmp(const void *vl, const void *vr, size_t n)
{
const unsigned char *l=vl, *r=vr;
for (; n && *l == *r; n--, l++, r++);
return n ? *l-*r : 0;
}