strcmp(比较字符串)
- int strcmp( const char *s1, const char *s2 );
strcmp()用来比较参数s1和s2字符串。字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1第一个字符值减去s2第一个字符值,若差值为0则再继续比较下个字符,若差值不为0则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。 若参数s1和s2字符串相同则返回0。s1若大于s2则返回大于0的值。s1若小于s2则返回小于0 的值。
strcoll(采用目前区域的字符排列次序来比较字符串)
- int strcoll( const char *s1, const char *s2 );
strcoll()会依环境变量LC_COLLATE所指定的字符排列次序来比较s1和s2 字符串。若参数s1和s2字符串相同则返回0,s1若大于s2则返回大于0的值,s1若小于s2则返回小于0 的值。若LC_COLLATE为"POSIX"或"C",则strcoll()与strcmp()作用完全相同。
strcasecmp(忽略大小写比较字符串)
- int strcasecmp ( const char *s1, const char *s2 );
strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异。若参数s1和s2字符串相同则返回0,s1长度大于s2长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0的值。
strncasecmp(忽略大小写比较字符串)
- int strncasecmp( const char *s1, const char *s2, size_t n );
strncasecmp()用来比较参数s1和s2字符串前n个字符,比较时会自动忽略大小写的差异。若参数s1和s2 字符串相同则返回0。s1 若大于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()用来比较s1和s2所指的内存区间前n个字符。字符串大小的比较是以ASCII码表上的顺序来决定。memcmp()首先将s1第一个字符值减去s2第一个字符的值,若差为0则再继续比较下个字符,若差值不为0则将差值返回。例如,字符串"Ac"和"ba"比较则会返回字符'A'(65)和'b'(98)的差值(-33)。若参数s1和s2所指的内存内容都完全相同则返回0值。s1若大于s2则返回大于0的值。s1若小于s2则返回小于0的值。
bcmp(比较内存内容)
- int bcmp ( const void *s1,const void * s2,int n);
bcmp()用来比较s1和s2所指的内存区间前n个字节,若参数n为0,则返回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));
- }