注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

头文件string.h中的函数(5)  

2014-06-13 10:04:20|  分类: C & C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

6. 字符串比较

字符串比较最常见的函数是strcmp,其原型如下:

int strcmp(const char* str1, const char* str2);
该函数持续比较两个字符串中的每个字符,在长度没有达到num(如果指定的话)或者两个字符串都没有达到’\0’的前提下,如果对应位的字符相同,则继续比较下一位,如果不同,则返回两个字符的ASCII差值,但是一般只需要关注返回值的符号,如果返回值为0,则表示字符串值相等,如果大于0,则表示第一个字符串较大,小于0则表示第一个字符串较小。下面的程序使用选择法对字符串进行比较排序:
#include <stdio.h>
#include <string.h>
int main ()
{
    char names[][5]={"Lisa","Zoe","Vera","Bob","Paul"};
    char temp[20];
    int i,j;
    
    //sort names
    for(i=0;i<5;i++)
    {
        for(j=i+1;j<5;j++)
        {
            if(strcmp(names[i],names[j])>0)//swap
            {
                strcpy(temp,names[i]);
                strcpy(names[i],names[j]);
                strcpy(names[j],temp);
            }
        }
    }
    //display names
    for(i=0;i<5;i++)
        puts(names[i]);
    return 0;
}
同其他字符串函数类似,这个函数也有一个对应的版本strncmp,也是比较前n个字符串。
除了这两个函数可以用于比较之外,还有一个内存操作形式的比较函数,原型如下:
int memcmp(const void* ptr1, const void* ptr2, size_t num);
请注意这个函数的前两个形参,表明它可以用于比较任何数据类型,而且,与strcmp和strncmp不同,它在没有达到num之前,即使碰到了’\0’也不会停下来返回,而是继续比较,只到比较的字节数达到了num。看下面的示例:
#include <stdio.h>
#include <string.h>
int main ()
{
    int a=100;
    double d;
    double* pd=(double*)(&a);
    d=*pd;
    printf("a=%d,d=%f\n",a,d);
    int t=memcmp(&a,&d,4);
    if(t>0)
        puts("Big!");
    else if(t==0)
        puts("Equal");
    else
        puts("Small");
    return 0;
}
这里解释一下这个函数的想法。首先是构造了一个整型数a,然后将a中的值解释为一个浮点类型,并将浮点值赋值给double类型数d,然后显示和比较a和d中的内容,虽然a和d不等,但是内存比较的结果却是Equal,阐述了memcmp的作用和副作用,好处是可以无视任何数据类型进行字节比较,而坏处是,可能会带来毫无意义的比较结果。
  评论这张
 
阅读(401)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016