字符排序问题-strcmp函数
extern int strcmp(const char *s1,const char * s2);
int strncmp (const char * str1, const char * str2, size_t n );
strcmp(str1,str2);
strncmp(str1,str2,n);
当str1<str2时,返回一个负数
当str1=str2时,返回值为零
当str1>str2时,返回一个正数
具体是两个字符串逐位按ASCII值大小比较,直到遇到'\0'或者出现不同的字符为止。
如:"A"<"B" "a">"A" "computer">"compare"
而strncmp,则是只比较两个字符串的前n位
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
以大小写不敏感的方式比较两个字符串,具体功能与说明同strcmp
#include <string.h> #include <memcopy.h> #undef strcmp int strcmp (p1, p2) const char *p1; const char *p2; { register const unsigned char *s1 = (const unsigned char *) p1; register const unsigned char *s2 = (const unsigned char *) p2; unsigned reg_char c1, c2; do{ c1 = (unsigned char) *s1++; c2 = (unsigned char) *s2++; if (c1 == '\0') return c1 - c2; } while (c1 == c2); return c1 - c2; } libc_hidden_builtin_def (strcmp)
参考:
9.C++: strcmp与strncmp函数 - 黄石forever - 博客园