C语言中查找数组中的元素(WIN)

本文详细介绍了qsort和bsearch这两个C标准库函数的使用方法。包括它们的函数声明、参数含义及常见应用场景示例,如整数排序、字符串搜索等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 通常把qsort与bsearch结合起来使用。

 

  1. qsort

    qsort的函数声明如下:
    void qsort(void *base, size_t num, size_t width, int(*comp)(const void *, const void *));

    参数说明如下:

    base: 要排序的数组
    num: 数组中的元素数目
    width: 每个数组元素占用内存空间,可使用sizeof获得
               如果数组元素为整数,此为sizeof(int)
               如果数组元素为字符串,此为sizeof(char*)
               如果数组元素为结构体car,此为sizeof(car)
    comp: 比较两个数组元素的比较函数。本比较函数的第一个参数值小于、等于、大于第二参数值时,本比较函数的返回值应分别小于、等于、大于零。

    注意:这个函数只能将base中的元素升序排列

    下面给出几个常用的comp函数(最后一个参数)的例子

    ●数组元素为整数


    ●数组元素为字符串


    ●数组元素为结构体
  2. bsearch

    qsort的函数声明如下:
    void *bsearch(const void *key, const void *base, size_t *nelem,  size_t width, int(*fcmp)(const void *, const *));

    参数的意思和qsort的差不多,区别在于:
    1. qsort用来排序,bsearch用二分法来查找元素
    2. bsearch中的base必须是升序排列的数组
    3. 如果数组里有重复的答案,则bsearch会返回其中一个的地址 (具体返回哪一个不确定)
    4. bsearch有五个自变量,第一个是要找的东西,剩下的跟qsort一模一样
    5. bsearch如果没找到所求则回传NULL ,否则回传该元素被找到的地址(void *)
  3. 使用示例

    ●判断数组中是否存在指定的字符串


    ●以电话号码为关键字,查找所属人信息
      (真正做的时候也许关键字key为(char*)类型会更加直观,但这里只是作个例子,说明参数如何设置。)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值