比较字符串的大小

来源:互联网 发布:南充市行知小学 编辑:程序博客网 时间:2024/05/19 07:45

原文转自:http://blog.csdn.net/sjmping/article/details/8059698

//功能:比较字符串的大小
//如果str1>str2返回1
//如果str1=str2返回0
//如果str1<str2返回-1

char strncmp(unsigned char *str1, unsigned char *str2, byte int num){    while(num != 0)    {       if((*str1) == (*str2))       {          str1++;          str2++;          num--;       }       else if((*str1) > (*str2))       {          return 1;       }       else if((*str1) < (*str2))       {          return -1;       }    }    return 0;}
         如果单纯比较长度,直接调用类似于strlen()之类的函数就可以,加以比较即可. 如果比较字符串的大小,则比较的是字符的ASCII编码的大小.搜索一下ASCII码表就可以得知每一个ASCII字符的大小. 在比较时,设置一个计数器,从零开始,一直循环到最短的那个字符结束,一位一位进行比较, 1.如果 字符串1的第n位的ASCII码值 等于 字符串2的第n位的ASCII码值 则 继续比较下一位 若if( zstrncmp(unsigned char *str1,unsigned char *str2,byte num)==0 ) //表示str1=str2 2.如果 字符串1的第n位的ASCII码值 大于 字符串2的第n位的ASCII码值 则 输出结果:1,表示字符串1 > 字符串2; 3.如果 字符串1的第n位的ASCII码值 小于 字符串2的第n位的ASCII码值 则 输出结果:-1 表示字符串1 < 字符串2; 4.如果 每一位的ASCII码值都相等,而且长度相同, 则 输出结果:0 表示字符串1 == 字符串2; 5.如果 字符串1是字符串2的前m位,例如 abcd 与abcdef 比较, 则 字符串1<字符串2. 原因是,到第5位时,字符串1的ASCII值是0,而字符串2的ASCII值为'e',即十进制的101, 当然是字符串2大了. 举例: 如 cds和lesoqd比较。 从第一位开始,'c'和'l'比较,当然是'c' < 'l'了,所以,"cds" < "lesoqd" ,return 1. 常用的几位ascii的顺序从小到大为: 0..9, A..Z, a..z.
0 0
原创粉丝点击