字符串和内存数据比较函数

strcmp(比较字符串) 

int strcmp( const char *s1, const char *s2 );

strcmp()用来比较参数s1s2字符串。字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1第一个字符值减去s2第一个字符值,若差值为0则再继续比较下个字符,若差值不为0则将差值返回。例如字符串"Ac""ba"比较则会返回字符"A"(65)'b'(98)的差值(33) 若参数s1s2字符串相同则返回0s1若大于s2则返回大于0的值。s1若小于s2则返回小于0 的值。

 

strcoll(采用目前区域的字符排列次序来比较字符串) 

int strcoll( const char *s1, const char *s2 );

strcoll()会依环境变量LC_COLLATE所指定的字符排列次序来比较s1s2 字符串。若参数s1s2字符串相同则返回0s1若大于s2则返回大于0的值,s1若小于s2则返回小于0 的值。若LC_COLLATE"POSIX""C",则strcoll()strcmp()作用完全相同。

 

strcasecmp(忽略大小写比较字符串) 

int strcasecmp ( const char *s1, const char *s2 );

strcasecmp()用来比较参数s1s2字符串,比较时会自动忽略大小写的差异。若参数s1s2字符串相同则返回0s1长度大于s2长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0的值。

 

strncasecmp(忽略大小写比较字符串) 

int strncasecmp( const char *s1, const char *s2, size_t n );

strncasecmp()用来比较参数s1s2字符串前n个字符,比较时会自动忽略大小写的差异。若参数s1s2 字符串相同则返回0s1 若大于s2则返回大于0的值,s1若小于s2则返回小于0 的值。

 

strcmpi()stricmp():对两个字符串进行大小写不敏感的比较。

strncmp():对两个字符串的一部分进行大小写敏感的比较。

strnicmp():对两个字符串的一部分进行大小写不敏感的比较。

#include <stdio.h>

#include <string.h>

 

int main()

{

    char *a="aBcDeF";

    char *b="AbCdEf";

    char *c="aacdef";

    char *d="ABCDEF";

   

    printf("strcmpi(a,b) : %d/n",strcmpi(a,b));

    printf("stricmp(a,b) : %d/n",stricmp(a,b));

    printf("strcmp(a,d) : %d/n",strcmp(a,d));

 

    printf("strncmp(a,b,3) : %d/n",strncmp(a,b,3));

    printf("strnicmp(a,b,3) : %d/n",strnicmp(a,b,3));

 

    getchar();

return 0;

}

memcmp(比较内存内容) 

int memcmp( const void *s1, const void *s2, size_t n );

memcmp()用来比较s1s2所指的内存区间前n个字符。字符串大小的比较是以ASCII码表上的顺序来决定。memcmp()首先将s1第一个字符值减去s2第一个字符的值,若差为0则再继续比较下个字符,若差值不为0则将差值返回。例如,字符串"Ac""ba"比较则会返回字符'A'(65)'b'(98)的差值(33)。若参数s1s2所指的内存内容都完全相同则返回0值。s1若大于s2则返回大于0的值。s1若小于s2则返回小于0的值。

 

bcmp(比较内存内容) 

int bcmp ( const void *s1,const void * s2,int n);

bcmp()用来比较s1s2所指的内存区间前n个字节,若参数n0,则返回0。若参数s1 s2 所指的内存内容都完全相同则返回0 值,否则返回非零值。 建议使用memcmp()取代。

#include <stdio.h>

#include <string.h>

int main()

{

    char *a ="aBcDeF";

    char *b="AbCdEf";

    char *c="aacdef";

    char *d="aBcDeF";

    printf("memcmp(a,b):%d/n",memcmp((void*)a,(void*) b,6));

    printf("memcmp(a,c):%d/n",memcmp((void*)a,(void*) c,6));

    printf("memcmp(a,d):%d/n",memcmp((void*)a,(void*) d,6));

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值