1.assert断言(判断程序运行时是否符合条件)
<assert.h>头文件定义了宏assert(),⽤于在运⾏时确保程序符合指定条件,如果不符合,就报 错终⽌运⾏。这个宏常常被称为“断⾔”。
assert() 宏接受⼀个表达式作为参数。如果该表达式为真(返回值⾮零), assert() 不会产⽣任何作⽤,程序继续运⾏。如果该表达式为假(返回值为零), assert() 就会报错,在标准错误流stderr 中写⼊⼀条错误信息,显⽰没有通过的表达式,以及包含这个表达式的⽂件名和⾏号。
assert() 的使⽤对程序员是⾮常友好的,使⽤ assert() 有⼏个好处:它不仅能⾃动标识⽂件和出问题的⾏号,还有⼀种⽆需更改代码就能开启或关闭 assert() 的机制。如果已经确认程序没有问题,不需要再做断⾔,就在 #include <assert.h> 语句的前⾯,定义⼀个宏 NDEBUG 。然后,重新编译程序,编译器就会禁⽤⽂件中所有的 assert() 语句。如果程序⼜出现问题,可以移除这条 #define NDBUG 指令(或者把它注释掉),再次编译,这样就重新启⽤了 assert() 语句。
assert() 的缺点是,因为引⼊了额外的检查,增加了程序的运⾏时间。⼀般我们可以在 Debug 中使⽤,在 Release 版本中选择禁⽤ assert 就⾏,在 VS 这样的集成开发环境中,在 Release 版本中,直接就是优化掉了。这样在debug版本写有利于程序员排查问题,在 Release 版本不影响⽤⼾使⽤时程序的效率。
2.字符函数
头文件<ctype.h>
基本格式:
1.字符分类函数
符号条件返回非0,不符合条件返回0。
2.字符转换函数
示例:
3.字符串函数
3.1 strcpy函数
1.头文件 <string.h>
2.基本格式
将源头source中的字符串拷贝到目的地 destination 目标数组中,包括 null 字符(并在该点停止)
源字符串必须以 '\0' 结束。
目标数组必须足够大。
目标数组必须可修改。源字符串不可修改。
模拟实现:
3.2 strcat函数
头文件<string.h>
基本格式:
将源字符串中的字符连接到目标字符串中,目标字符串中的终止字符 null 将会被源字符串中的第一个字符所覆盖,源字符串中的终止字符 null 也要连接到目标字符串中。
源字符串中必须包含 '\0' 。
目标字符串必须包含 '\0',否则不知道连接从哪里开始。
目标空间必须足够大,可以容纳下源字符串中的内容。
目标空间必须可修改。
目的地和来源不可以重叠。否则将会造成字符串无限连接,直到栈溢出。
模拟实现:
3.3 strcmp函数
比较两个字符串的大小
头文件<string.h>
从第一个字符开始按 ASCLL 码值将两个字符串的字符逐个进行比较,如果相同,则继续执行下一对,直到遇到字符不同或 \0 停止。
如果 str1 > str2 则返回值 >0
如果 str1 == str2 则返回值 ==0
如果 str1 < str2 则返回值 <0
模拟实现:
3.4 strncpy函数
1.头文件<string.h>
2.基本格式:
将源字符串的前num个字符拷贝到目标空间中
1.如果在拷贝num个字符之前就找到源字符串的末尾(null),即source的长度小于num,则剩余字符将用零填充,直至将num个字符拷贝到目标空间中。
2.如果source的长度大于num,则不会在目标空间末尾隐式附加 null 字符。因此,在这种情况下,destination 不应被视为以 null 结尾的字符串(这样读取时它会溢出)。
目标空间必须足够大,可以容纳下要拷贝的字符串
目标空间必须可修改,源字符串不可修改。
目的地和来源不得重叠
模拟实现:
3.5 strncat函数
1.头文件 <string.h>
2.基本格式:
1.将源字符串的前 num 字符追加到 目标空间后,加上一个终止的 null 字符。
2.如果源 字符串的长度小于 num,则仅复制终止 null 字符之前的内容,之后再加上一个终止的 null 字符。
目标应该足够大,可以容纳下连接的num个字符
目标字符串必须可修改,源字符串不可修改
目标字符串必须包含终止字符 '\0',否则不知道连接从哪里开始
模拟实现:
3.6 strncmp函数
1.头文件<string.h>
2.基本格式:
此函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续执行以下对,直到字符不同,直到达到终止的 null 字符,或者直到两个字符串中的 num 个字符匹配,以先发生者为准。
如果 str1 > str2 则返回值 >0
如果 str1 == str2 则返回值 ==0
如果 str1 < str2 则返回值 <0
模拟实现:
3.7 strstr函数
1.头文件<string.h>
2.基本格式:
返回指向 str1 中首次出现的 str2 的指针,如果 str2 不是 str1 的一部分,则返回空指针。
3.8 strtok函数
1.头文件:<string.h>
2.基本格式:
3.9 strerror函数
1.头文件<string.h>
2.基本格式:
perror 有能力直接打印错误信息,打印的时候,先打印传递给perror的字符串,然后打印:,再打印空格,最后打印错误信息。如果传递给perror的字符串为空字符串,直接打印错误信息。
头文件:<stdio.h>
基本格式: