c标准库解释(一)

一,assert.h       

1. void assert (int expression) 

        assert.h用于提供断言功能。断言是一种在程序中检查条件是否为真的机制。如果断言的条件为真,则程序继续执行;如果条件为假,则程序会终止并输出错误信息。断言通常用于调试阶段,帮助开发者发现和修复程序中的错误。它们可以确保程序的某些预期行为是正确的,或者在某些情况下触发异常。

        要使用assert.h中的断言功能,你需要包含该头文件,并在代码中使用assert()宏。例如:

#include <assert.h>

int main() {
    int x = -5;
    assert(x > 0); // 如果 x 不大于 0,程序将终止并输出错误信息
    return 0;
}

        在这个例子中,“assert(x > 0)” 检查变量 “x” 是否大于 0。如果 “x” 小于或等于 0,那么“assert()”条件为假,程序会调用 ”abort()“ 函数(通常由库提供),导致程序异常终止。同时,它会输出一条错误信息,通常是类似于 "Assertion failed: (x > 0), function main, file main.c, line 4." 的信息,告诉你哪个断言失败了以及失败的位置。

        需要注意的是,在发布产品时,通常会禁用断言以避免不必要的性能损失。在某些编译器中,可以通过定义 NDEBUG 宏来禁用断言功能。例如,在 GCC 中,可以使用 “-DNDEBUG” 编译选项来禁用断言。

二,ctype.h

1.  int isalnum (int c)

        “isalnum()”用于检查一个字符是否是字母或数字。

        这里的 “c” 是一个整数值,表示要检查的字符。通常,这个值是 “char” 类型的字符转换为 “int” 类型的 ASCII 码。
        ”isalnum()“ 函数会检查传入的字符是否为字母(无论大小写)或数字(0-9)。如果是,函数返回非零值(通常是1);如果不是,返回0。

使用示例:

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

int main() {
    char c1 = 'A'; // 大写字母
    char c2 = '5'; // 数字
    char c3 = '!'; // 特殊字符
    char c4 = '\t';// 特殊字符

    printf("isalnum(c1) = %d\n", isalnum(c1));//isalnum(c1)返回1
    printf("isalnum(c2) = %d\n", isalnum(c2));//isalnum(c2)返回4
    printf("isalnum(c3) = %d\n", isalnum(c3));//isalnum(c3)返回0
    printf("isalnum(c4) = %d\n", isalnum(c4));//isalnum(c4)返回0

    return 0;
}

        在这个例子中,“isalnum()”分别检查了四个不同的字符:一个大写字母、一个数字和两个特殊字符。对于前两个字符,”isalnum()“ 返回非0,表示它们是字母或数字;对于后两个一个字符,“isalnum()”返回0,表示它既不是字母也不是数字。

2.  int isalpha (int c)

         isalpha函数是用于判断给定字符是否为字母的函数。isalpha函数的基本使用非常简单。它接受一个整数参数(通常是一个字符的ASCII值),如果这个整数对应的字符是一个字母(无论是大写还是小写),那么函数返回一个非零值(通常是1或2);如果参数不是字母,则函数返回0。例如

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

int main() {
	int c1 = 'A'; // 字母
	int c2 = 'b'; // 字母
	int c3 = '@'; // 特殊字符
	int c4 = '\n';// 特殊字符

	printf("isalpha(c1) = %d\n", isalpha(c1));//isalpha(c1) = 1
	printf("isalpha(c2) = %d\n", isalpha(c2));//isalpha(c2) = 2
	printf("isalpha(c3) = %d\n", isalpha(c3));//isalpha(c3) = 0
	printf("isalpha(c4) = %d\n", isalpha(c4));//isalpha(c4) = 0

	return 0;
}

        在此例中,isalpha检查了四个字符,前两个为字符为字母,返回非0值,后两个不是字母,返回0.

        从功能上看,isalpha函数主要用于验证输入的字符是否为英文字母,这在许多应用中都非常有用。
        例如,在表单验证用户输入时,可以使用isalpha来检查用户输入的是否都是字母,从而避免无效数据的录入。同时,该函数也可以用于文本处理中,比如在提取文本中的英语单词时,可以通过isalpha来判断一个字符是否属于某个单词的一部分。

        除了直接使用标准库提供的isalpha函数,开发者还可以根据需要自行实现类似的功能。例如,可以编写一个循环来遍历字符的ASCII值,判断其是否落在字母对应的ASCII值范围内(大写字母A-Z对应ASCII值65-90,小写字母a-z对应ASCII值 97-122。这种自定义的实现方法虽然较为繁琐,但可以让开发者更深入地理解字符和ASCII码之间的关系。

3.  int iscntrl (int c) 

        ”iscntrl()“用于检查一个字符是否是控制字符。控制字符是ASCII表中前32个字符(从0到31),以及127号字符。这些字符主要用于控制设备的操作,如换行、制表符等。(详见下方ASCII表)。其中c是待检测的字符。如果c是控制字符,则函数返回非零值;否则,返回0。这在处理字符串时特别有用,例如,你想跳过字符串中的控制字符或对它们进行特殊处理。

        例如:

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

int main() {
	char c1 = 'A'; // 字母
	char c2 = '5'; // 数字
	char c3 = '\t'; // 控制字符
	char c4 = '\n';// 控制字符

	printf("iscntrl(c1) = %d\n", iscntrl(c1));//iscntrl(c1) = 0
	printf("iscntrl(c2) = %d\n", iscntrl(c2));//iscntrl(c2) = 0
	printf("iscntrl(c3) = %d\n", iscntrl(c3));//iscntrl(c3) = 32
	printf("iscntrl(c4) = %d\n", iscntrl(c4));//iscntrl(c4) = 32

	return 0;
}

例中,iscntrl处理四个字符,第一个字符是字母,返回0;第二个是数字,返回0,表示前两个并非控制字符。后两个返回32,非0,表示\t,\n是控制字符。

4.  int isdigit (int c) 

        用于检查一个字符是否是十进制数字(0-9)。如果是,则返回非0值,如果不是,则返回0。

        例如:

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

int main() {
	
	int c1 = '1';
	int c2 = '8';
	int c3 = 'h';

	printf("isdigit(c1) = %d\n", isdigit(c1));//isdigit(c1) = 4
	printf("isdigit(c2) = %d\n", isdigit(c2));//isdigit(c2) = 4
	printf("isdigit(c3) = %d\n", isdigit(c3));//isdigit(c3) = 0

	return 0;
}

        c1和c2返回4,因为它们是数字,c3返回0,因为它不是数字。

        这个函数在验证用户输入或数据预处理时非常有用。例如,可以编写一个函数来验证身份证号码或手机号码的合法性。

ASCII表

(未完待续)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值