- 字符函数
- 字符分类函数
- strlen 的使用和模拟实现
- strcpy 的使用和模拟实现
- strcat 的使用和模拟实现
- strcmp 的使用和模拟实现
- strncpy 函数的使用
- strncat 函数的使用
- strncmp 函数的使用
- strstr 的使用和模拟实现
- strtok 函数的使用
- strerror 函数的使用
正文开始——
C语言标准库中提供了一系列库函数方便我们操作字符和字符串。
1. 字符分类函数
作用 :字符分类函数是专门用来做字符分类的,也就是一个字符属于什么类型的字符。
头文件 :这些函数的使用需要包含头文件 <ctype.h>。
函数 | 如果它的参数符合下列条件返回真 |
---|---|
islower | 小写字母a~z |
isupper | 大写字母A~Z |
isdigit | 十进制数字 ‘0’~‘9’ |
isxdigit | 十六进制数字,包括所有十进制数字字符,小写字母 a~f ,大写字母A~F |
iscntrl | 任何控制字符 |
isspace | 空白字符:空格 ‘ ’,换页 ‘\f’,换行 ‘\n’,回车 ‘\r’,制表符 ‘\t’,或者垂直制表符 ‘\v’ |
isalpha | 字母a~z |
isalnum | 字母或数字,a~z,A~Z,0~9 |
ispunct | 标点符号,任何不属于数字或字母的图形字符(可打印) |
isgraph | 任何图形字符 |
isprint | 任何可打印字符,包括图形字符和空白字符 |
例如:islower
1 int islower ( int c ); //c处传递的是字符或者字符的ASCII值
islower 能够判断参数部分输入的是否是小写字母 。通过其返回值来判断是否是小写字母,如果是小写字母就返回非0的整数,如果不是,就返回0。
练习:写个代码,将字符串中的小写字母转为大写字母,其他字符不变。
2. 字符转换函数
C语言提供了两个字符转换函数:
1 int tolower ( int c ); //将大写转化为小写
2 int toupper ( int c ); //将小写转化为大写
有了这个函数,我们可以用函数实现上面的练习
3. strlen 的使用和模拟实现
1. 使用
- 字符串必须以 \0 作为结束标志,strlen 函数返回的是在字符串中 \0 之前的字符的个数(不包含 \0)。
- 参数指向的字符串必须要以 \0 结束。
- 注意函数的返回值是 size_t ,是无符号的(易错)。
- strlen 的使用需要包含头文件。
- 掌握 strlen 的三种模拟实现。
2. 三种模拟实现 【转到我的博客】
http://t.csdnimg.cn/7FOVnhttp://t.csdnimg.cn/7FOVn
4. strcpy 的使用和模拟实现
1. 使用
1 char* strcpy(char* destination, const char* source);
作用 :将源字符串的内容拷贝到目标空间。
头文件 :<string.h>
- 源字符串必须以 '\0' 结束。
- 会将源字符串中的 '\0' 拷贝到目标空间。
- 目标空间必须足够大,以确保能存放源字符串。
- 目标空间必须可修改。
- 此函数仅仅用于字符串的拷贝,其他类型不可以。
- 学会模拟实现。
2. 模拟实现
5. strcat 的使用和模拟实现
1. 使用
作用:实现字符串的追加。
头文件:<string.h>
- 源字符串必须以 '\0' 结束。
- 目标字符串中也得有 '\0',否则无法知道从哪里开始追加。
- 目标空间必须足够大,能容纳下源字符串的内容。
- 目标空间必须可修改。
- 字符串如何实现自己给自己追加?
2. 模拟实现
思路:首先找到目标空间的末尾 \0,再将源字符串拷贝过来。
注意:在模拟函数中,返回的是目标空间的起始地址。 在打印的时候可以使用函数返回的地址进行打印目标空间的字符串。
6. strcmp的使用和模拟实现
1. 使用
作用:比较的是两个字符串中对应位置上的字符的大小,而不是字符串的长度。
头文件:<string.h>
标准规定:第一个字符串大于第二个字符串,则返回大于0的数字,
第一个字符串小于第二个字符串,则返回小于0的数字,
第一个字符串等于第二个字符串,则返回 0,
判断两个字符串大小,是比较两个字符串中对应位置上字符ASCII值的大小。
2. 模拟实现
7. strncpy 函数的实现
1 char* strncpy ( char* destation, const char* source, size_t num );
作用:拷贝num个字符从源代码到目标空间。
注意:1. 如果源代码字符串的长度小于num,则拷贝完源代码字符串之后,在目标的后边追加0,直到num个。
2. 在拷贝完后目标空间最后没有 \0。
8. strncat 函数的使用
1 char* strncat( char* destation, const char* source, size_t num );
作用:将 source 指向的字符串的前 num 个字符追加到 destation 指向的字符串末尾,再追加一个\0 字符。
注意:如果 source 指向的字符串的长度小于 num 的时候,只会将字符串中到 \0 的内容追加到destation指向的字符串末尾。
9. strncmp 函数的使用
1 int strncmp ( const char* str1, const char* str2, size_t num );
作用: 比较 str1 和 str2 的前 num 个字符,如果相等就继续往后比较,做多比较 num 个字母,如果提前发现不一样,就提前结束,大的字符所在的字符串大于另外一个。如果 num 个字符都相等,就是相等返回 0。
以上总结:
1. strcpy strncpy
strcat ——长度没有限制 strncat ——长度受限制
strcmp strncmp
2. 关于字符串的函数的头文件都是 <string.h>
10. strstr 的使用和模拟实现
1.使用
作用:在 str1 中找 str2 这个字符串第一次出现的位置,如果找到了就返回这个函数第一次出现的起始位置,如果找不到,就返回 NULL。
注意:字符串的比较匹配不包含 \0 字符,以 \0 作为结束标志。
2. 模拟实现
11. strtok 函数的使用
1 char* strtok( char* str, const char* sep );
- sep 参数指向一个字符串,定义了用作分隔符的字符集合。
- 第一个参数指定一个字符串,它包含了0个或者多个由 sep 字符串中一个或者多个分隔符分割的标记。
- strtok 函数找到 str 中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注:strtok 函数会改变被操作的字符串,所以被 strtok 函数切分的字符串一般都是临时拷贝的内容并且可修改)。
- strtok 函数的第一个参数不为 NULL,函数将找到 str 中的第一个标记,strtok 函数将保存它在字符串中的位置。
- strtok 函数的第一个参数为 NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
- 如果字符串中不存在更多的标记,则返回 NULL 指针。
上代码:
12. strerror 函数的使用
1 char* strerror ( int errnum );
作用:strerror 函数可以把参数部分错误码对应的错误信息的字符串地址返回来。
解释:在不同的系统和C语言标准库的视线中都规定了一些错误码,一般是放在 errno.h 这个头文件中说明,C语言程序启动的时候就会使用一个全局变量 errno 来记录程序当前的错误码,程序启动时错误码为0,表示没有错误,当我们在使用标准库中的函数的时候发生了某种错误,就会将对应的错误码存放在errno 中,但是一个错误码的数字是整数是很难理解是什么意思的,所以每个错误码都有其对应的错误信息的。strerror 函数就可以将错误码对应的错误信息字符串的地址返回来。(将错误信息显示出来)
了解 perror函数:perror = strerror + printf。
完——
relaxing time!
下次见,拜拜~~~