加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用c语言写一个函数比较两个字符串str1和str2的大小

(2014-05-06 12:20:41)
分类: 每天一道编程题

//问题:用c语言写一个函数比较两个字符串str1和str2的大小
//若相等返回0,若str1大于str2返回1,若str1小于str2返回-1

//分析:返回值为-1 0 1则函数返回值为有符号类型可定义为int ,形参为两个字符串指针
//使用前需要检验传入参数是否为空指针
//函数原型为:int My_Strcmp(const char *str1, const char *str2);

//实现分析:字符串比较的是字符的ASCII码值的大小,一直比较到出现不同的字符或遇到'\0'为止
//ASCII码为0-255的无符号数,所以需要进行强制类型转换后再进行比较


//for循环实现
int My_Strcmp(const char *str1, const char *str2)
{
     for(; *str1==*str2; ++str1,++str2)
         if(*str1 == '\0')
         {
             retrun 0;  
         }
     return ((*(unsigned char *)str1<*(unsigned char *)str2)?-1:1);
}

//while循环实现
int My_Strcmp(const char *str1, const char *str2)
{
    while(*str1 == *str2)
    {
        if(*str1 == '\0')
         return 0;
         
        str1++;
        str2++; 
   
   
    return ((*(unsigned char *)str1<*(unsigned char *)str2)?-1:1);   
}

//减法实现
int My_Strcmp(const char *str1, const char *str2)
{
    int ret;
   
    while(!(ret=*(unsigned char)str1-*(unsigned char)str2))&&(*str1!='\0'))
    {
        str1++;
        str2++; 
    }
   
    if(ret<0)
     retrun -1;
    else if(ret>0)
     return 1;
    return 0; 
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有