C语言函数大全--h开头的函数

news2024/7/30 9:58:51

C语言函数大全

本篇介绍C语言函数大全–h开头的函数或宏

1. hypot,hypotf,hypotl

1.1 函数说明

函数声明函数功能
double hypot(double x, double y);计算直角三角形的斜边长(double)
float hypotf (float x, float y);计算直角三角形的斜边长(float)
long double hypot(long double x, long double y);计算直角三角形的斜边长(long double)

1.2 演示示例

#include <stdio.h>
#include <math.h>

int main(void)
{
   double result, x = 3.0, y = 4.0;
   result = hypot(x, y);

   float resultf, xf = 3.0, yf = 4.0;
   resultf = hypotf(xf, yf);

   long double resultL, xL = 3.0, yL = 4.0;
   resultL = hypotl(xL, yL);

   printf("The hypotenuse of a right triangle whose legs are %lf and %lf is %lf\n", x, y, result);
   printf("The hypotenuse of a right triangle whose legs are %f and %f is %f\n", xf, yf, resultf);
   printf("The hypotenuse of a right triangle whose legs are %Lf and %Lf is %Lf\n", xL, yL, resultL);

   return 0;
}

1.3 运行结果

在这里插入图片描述

2. HUGE_VAL,HUGE_VALF,HUGE_VALL

2.1 函数说明

宏定义宏描述
#define HUGE_VAL _HUGE正浮点常量表达式(double),这些表达式与浮点函数和运算符在溢出时返回的值相比较
#define HUGE_VALF __INFF正浮点常量表达式(float),这些表达式与浮点函数和运算符在溢出时返回的值相比较
#define HUGE_VALL __INFL正浮点常量表达式(long double),这些表达式与浮点函数和运算符在溢出时返回的值相比较

2.2 演示示例

#include<stdio.h>
#include<math.h>
int main()
{
    double result = 1.0/0.0;
    printf("1.0/0.0 = %lf\n", result);
    if (result == HUGE_VAL)
        puts("1.0/0.0 == HUGE_VAL\n");

    float resultf = 1.0f/0.0f;
    printf("1.0f/0.0f = %f\n", resultf);
    if (resultf == HUGE_VALF)
        puts("1.0f/0.0f == HUGE_VALF\n");

    long double resultL = 1.0L/0.0L;
    printf("1.0L/0.0L = %Lf\n", resultL);
    if (resultL == HUGE_VALL)
        puts("1.0L/0.0L == HUGE_VALL\n");

    return 0;  
}

2.3 运行结果

在这里插入图片描述

3. harderr,hardresume,hardretn

3.1 函数说明

函数声明函数功能
void harderr(int (*fptr)());建立一个硬件错误处理程序
void hardresume(int rescode);硬件错误处理函数
void hardretn(int rescode);硬件错误处理函数

3.2 演示示例

/*
    此程序将捕获磁盘错误并提示用户执行操作。
    尝试在驱动器A:中没有磁盘的情况下运行它,以调用它的功能。
*/
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#define IGNORE  0
#define RETRY   1
#define ABORT   2
int buf[500];

//定义捕获磁盘问题的错误消息
static char *err_msg[] = {
    "write protect",
    "unknown unit",
    "drive not ready",
    "unknown command",
    "data error (CRC)",
    "bad request",
    "seek error",
    "unknown media type",
    "sector not found",
    "printer out of paper",
    "write fault",
    "read fault",
    "general failure",
    "reserved",
    "reserved",
    "invalid disk change"
};

int error_win(char *msg)
{
    int retval;
    cputs(msg);

    // 提示用户按键中止、重试、忽略
    while(1)
    {
        retval= getch();
        if (retval == 'a' || retval == 'A')
        {
            retval = ABORT;
            break;
        }
        if (retval == 'r' || retval == 'R')
        {
            retval = RETRY;
            break;
        }
        if (retval == 'i' || retval == 'I')
        {
            retval = IGNORE;
            break;
        }
    }

    return(retval);
}

/*
    pragma warn-par 减少了由于处理程序未使用参数errval、bp 和 si而产生的警告。
*/
#pragma warn -par

int handler(int errval,int ax,int bp,int si)
{
    static char msg[80];
    unsigned di;
    int drive;
    int errorno;
    di= _DI;

    // 如果这不是磁盘错误,那么是另一个设备出现故障
    if (ax < 0)
    {
        error_win("Device error");
        // 返回到直接请求中止的程序
        hardretn(ABORT);
    }
    // 否则就是磁盘错误
    drive = ax & 0x00FF;
    errorno = di & 0x00FF;
    sprintf(msg, "Error: %s on drive %c\r\nA)bort, R)etry, I)gnore: ", err_msg[errorno], 'A' + drive);
    // 通过dos中断0x23返回程序,并由用户输入中止、重试或忽略。
    hardresume(error_win(msg));
    return ABORT;
}

#pragma warn +par

int main(void)
{
    // 在硬件问题中断上安装我们的处理程序
    harderr(handler);
    clrscr();
    printf("Make sure there is no disk in drive A:\n");
    printf("Press any key ....\n");
    getch();
    printf("Trying to access drive A:\n");
    printf("fopen returned %p\n", fopen("A:temp.dat", "w"));
    return 0;
}

4. highvideo

4.1 函数说明

函数声明函数功能
void highvideo(void);选择高亮度文本字符

4.2 演示示例

#include <stdio.h>
#include <conio.h>

int main(void)
{
    clrscr();

    lowvideo();
    cprintf("Low Intensity text\r\n");
    highvideo();
    gotoxy(1,2);
    cprintf("High Intensity Text\r\n");

    return 0;
}

5. hcreate,hcreate_r

5.1 函数说明

函数声明函数功能
int hcreate(size_t nel);根据条目数创建哈希表。
int hcreate_r(size_t nel, struct hsearch_data *htab);根据条目数及其描述创建哈希表。

入参:

  • net : 哈希表中允许的最大项数。
  • htab : 哈希表的结构体数据。

返回值:

  • 如果操作成功,则返回一个非零值;
  • 如果操作失败,则返回 0 并将 errno 设置为一个值。

5.2 演示示例

#include <stdio.h>
#include <stdlib.h>
#include <search.h>

char *data[] = { "alpha", "bravo", "charlie", "delta",
     "echo", "foxtrot", "golf", "hotel", "india", "juliet",
     "kilo", "lima", "mike", "november", "oscar", "papa",
     "quebec", "romeo", "sierra", "tango", "uniform",
     "victor", "whisky", "x-ray", "yankee", "zulu"
};

int main(void)
{
    ENTRY e, *ep;
    int i;

    hcreate(30);

    for (i = 0; i < 24; i++) {
        e.key = data[i];
        // 数据只是一个整数,而不是指向某个东西的指针
        e.data = (void *) i;
        ep = hsearch(e, ENTER);
        // 这里不应该有失败场景
        if (ep == NULL) {
            fprintf(stderr, "entry failed\n");
            exit(EXIT_FAILURE);
        }
    }

    for (i = 22; i < 26; i++) {
        // 从表中打印两个条目,并显示其中两个不在表中
        e.key = data[i];
        ep = hsearch(e, FIND);
        printf("%9.9s -> %9.9s:%d\n", e.key, ep ? ep->key : "NULL", ep ? (int)(ep->data) : 0);
    }
    hdestroy();
    exit(EXIT_SUCCESS);
}

6. hsearch,hsearch_r

6.1 函数说明

函数声明函数功能
ENTRY *hsearch(ENTRY item, ACTION action);添加或搜索哈希条目。
int hsearch_r (ENTRY item, ACTION action, ENTRY ** retval, struct hsearch_data * htab )搜索哈希表。

注意:
hsearchhsearch_r 函数根据指定的操作在哈希表中搜索条目。如果操作为 FIND,则仅执行搜索操作。如果操作为 ENTER,则未找到的条目将添加到哈希表中。hsearch_r 函数与 hsearch 函数的不同之处在于,指向找到的项的指针以 *retval 形式返回,而不是作为函数结果。

入参:

  • item: 要搜索的哈希表条目。
  • action: 功能操作。ENTER 表示已添加条目,FIND 表示已搜索条目。
  • retval: 指向找到的项的指针。
  • htab : 哈希表的结构体数据。

hsearch 函数返回值:

  • 如果操作成功,则返回指向哈希表的指针。

hsearch_r 函数返回值:

  • 如果操作成功,则返回一个非零值;
  • 如果操作失败,则返回 0。

6.2 演示示例

参考 5.2

7. hdestroy,hdestroy_r

7.1 函数说明

函数声明函数功能
void hdestroy(void);销毁哈希表,释放用于创建哈希表的内存。
void hdestroy_r(struct hsearch_data *htab);销毁哈希表,释放指定哈希表所占用的内存。

7.2 演示示例

参考 5.2

参考

  1. [API Reference Document]
  2. [highvideo]
  3. [hcreate,hsearch,hdestroy,hcreate_r,hsearch_r,hdestroy_r]
  4. [UTILS-标准C库]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417471.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UPA/URA双极化天线的协方差矩阵结构

文章目录UPA的阵列响应向量&#xff08;暂不考虑双极化天线&#xff09;UPA阵列响应&#xff1a;从单极化天线到双极化天线UPA双极化天线的协方差矩阵结构参考文献UPA的阵列响应向量&#xff08;暂不考虑双极化天线&#xff09; 下图形象描述了UPA阵列的接收信号 UPA阵列的水平…

【springcloud 微服务】Spring Cloud 微服务网关Gateway使用详解

目录 一、微服务网关简介 1.1 网关的作用 1.2 常用网关 1.2.1 传统网关 1.2.2 云原生网关 二、gateway网关介绍 2.1 问题起源 2.2 引发的问题 2.2.1 重复造轮子 2.2.2 调用低效 2.2.3 重构复杂 2.3 gateway改进 三、Spring Cloud Gateway 介绍 3.1 Gateway 概述 …

【JSON学习笔记】3.JSON.parse()及JSON.stringify()

前言 本章介绍JSON.parse()及JSON.stringify()。 JSON.parse() JSON 通常用于与服务端交换数据。 在接收服务器数据时一般是字符串。 我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。 语法 JSON.parse(text[, reviver])参数说明&#xff1a; text:必需&…

Angular可视化指南 - 用Kendo UI图表组件创建数据可视化

Kendo UI for Angular是专业级的Angular UI组件库&#xff0c;不仅是将其他供应商提供的现有组件封装起来&#xff0c;telerik致力于提供纯粹高性能的Angular UI组件&#xff0c;而无需任何jQuery依赖关系。无论您是使用TypeScript还是JavaScript开发Angular应用程序&#xff0…

【机器学习(二)】线性回归之梯度下降法

文章目录专栏导读1、梯度下降法原理2、梯度下降法原理代码实现3、sklearn内置模块实现专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN Python领域新星创作者&#xff0c;专注于分享python领域知识。 ✍ 本文录入于《数据分析之术》&#xff0c;本专栏精选了经典的机器…

1漏洞发现

漏洞发现-操作系统之漏洞探针类型利用修复 一、操作系统漏洞思维导图 相关名词解释&#xff1a; CVSS&#xff08;Common Vulnerability Scoring System&#xff0c;即“通用漏洞评分系统”&#xff09; CVSS是安全内容自动化协议&#xff08;SCAP&#xff09;的一部分通常C…

rockchip rk3588添加uvc及uvc,adb的复合设备

软硬件环境&#xff1a; 软件基础&#xff1a;我目前拿到的rk3588 sdk &#xff1a;gitwww.rockchip.com.cn:2222/Android_S/rk3588- manifests.git硬件基础&#xff1a;RK3588 LP4X EVB uvc_app: 从rv1126 sdk中rv1126_sdk/rv1126/external/uvc_app 目录移植而来。移植后&…

能翻译大量文字的软件-正规的翻译软件

复制自动翻译软件是一种能够复制并自动翻译文本的工具。当您阅读某一种语言的文本时&#xff0c;这种软件可以快速识别并翻译出来&#xff0c;以方便您更好地理解内容。与其他翻译软件不同的是&#xff0c;复制自动翻译软件可以直接在游览网站的过程中&#xff0c;直接对用户正…

【C++】命名空间,缺省参数,函数重载,引用,内联函数

目录1. 命名空间2. 输入输出3. 缺省参数4. 函数重载为什么C支持函数重载&#xff1f;5. 引用5.1 引用作函数参数&#xff08;输出型参数&#xff09;5.2 作函数的返回值关于函数的返回值&#xff1a;5.3 引用权限关于类型转换&#xff1a;5.4 引用和指针6. 内联函数6.1 C推荐的…

【千题案例】TypeScript获取两点之间的距离 | 中点 | 补点 | 向量 | 角度

我们在编写一些瞄准、绘制、擦除等功能函数时&#xff0c;经常会遇到计算两点之间的一些参数&#xff0c;那本篇文章就来讲一下两点之间的一系列参数计算。 目录 1️⃣ 两点之间的距离 ①实现原理 ②代码实现及结果 2️⃣两点之间的中点 ①实现原理 ②代码实现及结果 3…

JUC结构

JUC是java.util.concurrent包的简称在Java5.0添加&#xff0c;目的就是为了更好的支持高并发任务。让开发者进行多线程编程时减少竞争条件和死锁的问题&#xff01;进程与线程的区别&#xff1a;进程 : 一个运行中的程序的集合; 一个进程往往可以包含多个线程,至少包含一个线程…

count、sum、avg、max、min函数MySQL数据库 - 使用聚合函数查询(头歌实践教学平台)

文章目的初衷是希望学习笔记分享给更多的伙伴&#xff0c;并无盈利目的&#xff0c;尊重版权&#xff0c;如有侵犯&#xff0c;请官方工作人员联系博主谢谢。 目录 第1关&#xff1a;COUNT( )函数 任务描述 相关知识 COUNT()函数基本使用 编程要求 第2关&#xff1a;SUM(…

3.Java运算符

Java运算符 运算符基本分为六类&#xff1a;算数运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、三元&#xff08;条件&#xff09;运算符。 一、算术运算符 算数运算符&#xff0c;是指在Java运算中&#xff0c;计算数值类型的计算符号&#xff0c;既然是操作数值…

ubuntu下安装与配置samba

参考文章&#xff1a; https://blog.csdn.net/xurongxin2006/article/details/127740629 https://blog.csdn.net/weixin_42758707/article/details/129855529 https://www.linuxidc.com/Linux/2018-11/155466.htm https://blog.csdn.net/flyingcys/article/details/50673167 1、…

SGD,Adam,AdamW,LAMB优化器

一. SGD&#xff0c;Adam&#xff0c;AdamW&#xff0c;LAMB优化器 优化器是用来更新和计算影响模型训练和模型输出的网络参数&#xff0c;使其逼近或达到最优值&#xff0c;从而最小化(或最大化)损失函数。 1. SGD 随机梯度下降是最简单的优化器&#xff0c;它采用了简单的…

Qt音视频开发37-识别鼠标按下像素坐标

一、前言 在和视频交互过程中&#xff0c;用户一般需要在显示视频的通道上点击对应的区域&#xff0c;弹出对应的操作按钮&#xff0c;将当前点击的区域或者绘制的多边形区域坐标或者坐标点集合&#xff0c;发送出去&#xff0c;通知其他设备进行处理。比如识别到很多人脸&…

使用 gzip 压缩数据

gzip 是GNU/Linux平台下常用的压缩软件&#xff0c;处理后缀名.gz的文件。 gzip 、 gunzip 和 zcat 都可以处理这种格式的。但这些工具只能压缩/解压缩单个文件或数据流&#xff0c;无法直接归档目录和多个文件。但是&#xff0c; gzip 可以同tar 和 cpio 这类归档工具配合使用…

JavaWeb——网络的基本概念

目录 一、IP地址 1、定义 2、格式 &#xff08;1&#xff09;、A类地址 &#xff08;2&#xff09;、B类地址 &#xff08;3&#xff09;、C类地址 &#xff08;4&#xff09;、特殊地址 二、端口号 三、协议 四、协议分层 1、定义 2、分类 &#xff08;1&#xf…

pytorch进阶学习(六):如何对训练好的模型进行优化、验证并且对训练过程进行准确率、损失值等的可视化,新手友好超详细记录

课程资源&#xff1a; 7、模型验证与训练过程可视化【小学生都会的Pytorch】【提供源码】_哔哩哔哩_bilibili 推荐与上一节笔记搭配食用~&#xff1a; pytorch进阶学习&#xff08;五&#xff09;&#xff1a;神经网络迁移学习应用的保姆级详细介绍&#xff0c;如何将训练好…

给boss直聘的搜索结果加上hr活跃状态,少看点半年活跃的岗位,有书签版,油猴版

背景&#xff1a;这段时间找工作&#xff0c;无奈大环境不好&#xff0c;所在城市大部分公司都投了。就是没几个回复的&#xff0c;要么送达&#xff0c;要么已读不回&#xff0c;要么拿了简历没见邀约。然后boss为了争取我们多浏览网站&#xff0c;把一些陈年老醋也拿上台面&a…