C基础-标准库上

admin2024-07-04  34

目录

零. 简介

一. assert

二. ctype

三. errno

四. float

五. limits

六. locale


C基础-标准库下连接: http://t.csdnimg.cn/LCcXR

零. 简介

C 语言标准库是一组由 ANSI C 标准规定的头文件和函数的集合,为 C 语言提供了常用的功能,以满足各种基本的编程需求。它可以在不同的操作系统和编译器下使用,保证了 C 语言的可移植性

一. assert

assert是 C 语言标准库 <assert.h> 中的一个宏,用于在程序调试阶段进行条件断言。

属性和特点

  • 当断言表达式为假(即值为 0)时,assert 会输出一条错误信息,并终止程序的执行。
  • 在发布版本中,如果定义了 NDEBUG 宏(通常通过编译器选项实现),assert 语句会被忽略,不会产生任何运行时开销。

方法
assert(expression) ,其中 expression 是一个需要判断真假的表达式。

示例代码

#include <assert.h>
#include<stdio.h>
int main() {
    int num = 5;
    // 断言 num 大于 0
    assert(num > 0);
    printf("num is positive\n");
    return 0;
}

在上述代码中,如果 num 不大于 0 ,assert 就会触发错误,输出相关信息并终止程序。

在实际开发中,assert 常用于检查函数的前置条件、后置条件以及程序中的关键逻辑点,帮助开发者在调试阶段及时发现问题。

效果图:

成立

C基础-标准库上,第1张

不成立

C基础-标准库上,第2张

二. ctype

ctype.h定义了一批 C 语言字符分类函数,用于测试字符是否属于特定的字符类别,如字母字符、控制字符等,既支持单字节(Byte)字符,也支持宽字符。

以下是一些常见的函数及其简介、返回值和参数说明:

以下是一个使用这些函数的例子:

#include <ctype.h>
#include <stdio.h>

int main() {
    char ch;
    printf("输入一个字符:");
    scanf_s("%c", &ch);
    if (isalnum(ch)) {
        printf("%c 是字母或数字.", ch);
    } else {
        printf("%c 不是字母或数字.", ch);
    }
    putchar('\n');
    return 0;
}

效果图

C基础-标准库上,第3张

三. errno

errno 是 C 语言标准库中用于表示错误代码的全局变量。

属性

常见的错误代码

示例代码

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

int main() {
    double num = -1.0;
    double result = sqrt(num);
    if (errno == EDOM) {
        printf("错误:参数不能为负数\n");
    } else {
        printf("平方根:%f\n", result);
    }
    return 0;
}

在上述示例中,对负数求平方根会导致错误,errno 被设置为 EDOM ,从而可以检测到错误并进行相应处理。

效果图

C基础-标准库上,第4张

四. float

float.h 是 C 语言标准库中的一个头文件,它提供了有关浮点数类型(如 floatdouble 和 long double)的范围和精度的信息。

以下是一些常见的宏和示例代码:

#include <stdio.h>
#include <float.h>

int main() {
    printf("Float 类型的最小值: %e\n", FLT_MIN);
    printf("Float 类型的最大值: %e\n", FLT_MAX);
    printf("Float 类型的精度(小数位数): %d\n", FLT_DIG);

    printf("Double 类型的最小值: %e\n", DBL_MIN);
    printf("Double 类型的最大值: %e\n", DBL_MAX);
    printf("Double 类型的精度(小数位数): %d\n", DBL_DIG);

    printf("Long Double 类型的最小值: %Le\n", LDBL_MIN);
    printf("Long Double 类型的最大值: %Le\n", LDBL_MAX);
    printf("Long Double 类型的精度(小数位数): %d\n", LDBL_DIG);

    return 0;
}

通过这些宏,您可以在编程中根据实际需求合理地处理浮点数,以避免出现溢出、精度不足等问题。

五. limits

limits.h 是 C 标准库中的头文件,用于定义各种整数类型的取值范围和限制。

属性

以下是一个简单的示例代码,展示了如何使用 limits.h 中的宏:

#include <stdio.h>
#include <limits.h>

int main() {
    printf("int 类型的最小值: %d\n", INT_MIN);
    printf("int 类型的最大值: %d\n", INT_MAX);

    printf("unsigned int 类型的最大值: %u\n", UINT_MAX);

    printf("char 类型的最小值: %d\n", CHAR_MIN);
    printf("char 类型的最大值: %d\n", CHAR_MAX);

    return 0;
}

在这个示例中,我们使用了 limits.h 中定义的宏来输出不同整数类型的取值范围。

六. locale

locale.h 是 C 标准库中的头文件,用于处理本地化相关的设置和操作。
本地化涉及到根据特定的地域或文化习惯来定制程序的行为,例如数字、货币、日期和时间的格式,字符编码,以及文本的排序规则等。

属性

方法

以下是一个简单的示例代码,展示了如何使用 locale.h 中的函数:

#include <stdio.h>
#include <locale.h>

int main() {
    // 设置本地环境为系统默认
    setlocale(LC_ALL, "");

    struct lconv *locale_info = localeconv();

    printf("本地货币符号: %s\n", locale_info->currency_symbol);
    printf("小数点字符: %c\n", locale_info->decimal_point);

    return 0;
}

请注意,上述示例的输出结果会因您的系统本地化设置而有所不同.

效果图:

C基础-标准库上,第5张

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!