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)); } |