本篇博客将讲解以下知识:
(1)字符分类函数
(2)字符转换函数
(3)strlen的使用和模拟实现
1、字符分类函数
C语言中有一一系列的函数是专门做字符分类的,就是字符是属于什么类型的字符的。
这些函数的使用都需要包含一个头文件:ctype.h
函数 如果函数的参数符合下列条件就返回真
iscntrl 任何控制字符
isspace 空白字符,空格' ',换页‘f’, 换行'\n\, 回车'\r' 制表符‘\t’ , 垂直制表符‘\v’
isxdigit 十六进制数字, 包含所有十进制数字字符,小写字母a~f,大写字母A~F
islower 小写字母 a~z
isupper 大写字母A~Z
isalpha 字母a~z或A~Z
isalnum 字母或者数字,a~z,A~Z,0~9
ispunct 标点符号,任何不属于数字或者字母的图形字符(可打印)
isgraph 任何图形字符
isprint 任何可打印字符,包括图形字符和空白字符
该函数的具体用法可以通过官网网站来查看具体用法:cplusplus.com - The C++ Resources Network
这些函数的使用方法非常类似,以下面函数讲解来举例:
int islower (int c)
islower是能够判断参数部分的c是否是小写字母的,通过返回值来说明是否是小写字母,入如果是小写字母,则返回非零的整数。如果不是小写字母,则返回0。
代码示例: 写一个代码,将字符串中的小写字母转大写,其它字符不变。
方法一:不使用库函数
方法二:使用库函数
2、字符转换函数
C语言提供了2个字符转换函数:
(1)int tolower(int c) ;//将参数传进的大写字母转换为小写
(2)int toupper(int c);//将参数传进的小写字母转大写
注意:使用该两个函数时要包含头文件:ctype.h
示例:
代码示例: 写一个代码,将字符串中的小写字母转大写,其它字符不变。
方法三:
3、strlen的使用和模拟
strlen的原型:
size_t strlen(const char* str)
strlen函数求的是字符串的长度,统计的是字符串中\0之前的字符个数,字符串中必须有\0.
(1)字符串以'\0',作为结束标志,strlen函数返回的是在字符串中‘\0’前面出现的字符个数(不包含‘\0’)
(2)参数指向的字符串必须要以‘\0’结束
(3)注意函数的返回值为size_t,是无符号的
(4)strlen的使用需要包含头文件:string.h
特殊代码:
注意:两个size_t类型的值相减,结果是无符号整数,即差大于0(零);
strlen的模拟实现方式:
(1)计数器的形式
(2)指针+-指针
(3)递归的形式
//1、计数器的形式
#include<stdio.h>
#include<assert.h>
int my_strlen(const char* str)
{
int count = 0;
assert(str != NULL);
while (*str != '\0')
{
count++;
str++;
}
return count;
}
//2、指针+-指针
#include<stdio.h>
#include<string.h>
int my_strlen(char* s)
{
assert(s != NULL);
char* p = s;
while (*p != '\0')
{
p++;
}
return p - s;
}
//3、递归的形式---不创建临时变量