C基础-标准库上

发布于:2024-07-04 ⋅ 阅读:(68) ⋅ 点赞:(0)

目录

零. 简介

一. 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 常用于检查函数的前置条件、后置条件以及程序中的关键逻辑点,帮助开发者在调试阶段及时发现问题。

效果图:

成立

不成立

二. ctype

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

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

  • isalpha:检查字符是否是字母。函数原型为int isalpha(char ch),返回值为是字母则返回非 0(在某些编译器中可能为 2),否则返回 0。
  • iscntrl:检查字符是否是控制字符(其 ASCII 码在 0 和 0x1F 之间,数值为 0 - 31)。函数原型为int iscntrl(int ch),返回值为是控制字符返回非 0,否则返回 0。
  • isdigit:检查字符是否是数字(0 - 9)。函数原型为int isdigit(char ch),返回值为是数字返回非 0,否则返回 0。
  • isgraph:检查字符是否是可显示字符(其 ASCII 码在 0x21 到 0x7E 之间),不包括空格。函数原型为int isgraph(int ch),返回值为是可显示字符返回非 0,否则返回 0。
  • islower:检查字符是否是小写字母(a - z)。函数原型为int islower(int ch),返回值为是小写字母返回非 0,否则返回 0。
  • isupper:检查字符是否是大写字母(A - Z)。函数原型为int isupper(int ch),返回值为是大写字母返回非 0,否则返回 0。
  • tolower:将字符转换为小写字母。函数原型为int tolower(int ch),返回值为返回ch所代表的字符的小写字母。
  • toupper:将字符转换为大写字母。函数原型为int toupper(int ch),返回值为与ch相应的大写字母。
  • isalnum:检查字符是否是字母或数字。函数原型为int isalnum(int ch),返回值为是字母或数字返回非 0,否则返回 0。
  • isprint:检查字符是否是可打印字符(包括空格),其 ASCII 码在 0x20 到 0x7E 之间。函数原型为int isprint(int ch),返回值为是可打印字符返回非 0,否则返回 0。
  • ispunct:检查字符是否是标点字符(不包括空格),即除字母、数字和空格以外的所有可打印字符。函数原型为int ispunct(int ch),返回值为是标点字符返回非 0,否则返回 0。
  • isspace:检查字符是否是空格符、跳格符(控制字符)或换行符。函数原型为int isspace(int ch),返回值为是返回非 0,否则返回 0。
  • isxdigit:检查字符是否是一个 16 进制数学字符(即 0 - 9,或 A - F,或 a - f)。函数原型为int isxdigit(int ch),返回值为是返回非 0,否则返回 0。
  • isascii:测试参数是否是 ASCII 码 0 - 127。函数原型为int isascii(int ch),返回值为是返回非 0,否则返回 0。

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

#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;
}

效果图

三. errno

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

属性

  • 它是一个整数类型的变量。

方法
在 C 标准库中的许多函数,当执行出错时,会设置 errno 的值来指示具体的错误类型。

常见的错误代码

  • EDOM:表示函数的参数超出了定义域。
  • ERANGE:表示函数的结果超出了范围。

示例代码

#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 ,从而可以检测到错误并进行相应处理。

效果图

四. 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 标准库中的头文件,用于定义各种整数类型的取值范围和限制。

属性

  • 包含了一系列表示整数类型范围的宏,例如 INT_MINint 类型的最小值)、INT_MAXint 类型的最大值)等。

方法
它本身并没有方法,只是通过宏来提供相关的信息。

以下是一个简单的示例代码,展示了如何使用 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 标准库中的头文件,用于处理本地化相关的设置和操作。
本地化涉及到根据特定的地域或文化习惯来定制程序的行为,例如数字、货币、日期和时间的格式,字符编码,以及文本的排序规则等。

属性

  • 包含了一系列用于设置和获取本地化信息的宏和数据类型。

方法

  • setlocale 函数:用于设置或查询程序的当前本地化环境。
  • localeconv 函数:返回一个包含本地化特定的数字和货币格式信息的结构体。

以下是一个简单的示例代码,展示了如何使用 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;
}

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

效果图:


网站公告

今日签到

点亮在社区的每一天
去签到