字符函数和字符串函数

1.字符分类函数

C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的,这些函数的使用都需要包含一个头文件  ctype.h

1)islower 能判断参数部分的是否是大小写

int islower(int c);

如果是小写字母就返回非0的整数,如果不是小写字母,则返回0

2)a.将字符串中的小写字母转大写,其他字符不变(只会找到小写字母)

b.

C语言提供了两个字符转换函数

int tolower(int c);//将参数传进去的大写字母转小写

int toupper(int c);//将参数传进去的小写字母转大写  

2.strlen的使用和模拟实现

字符串以'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数

函数的返回值为size_t,是无符号的


 2.1.  strlen的模拟实现

      

  


2.2.strcpy的使用和模拟实现

将source指向的C字符串复制到destination指向的数组中,包括终止的空字符(并停止在该位置)

char * strcpy(char * destination,const char * source)

                                   目的地                               源头

源字符串必须以'\0'结束

会将源字符串的'\0'拷贝到目标空间

证明:

         

目标空间必须足够大,以确保存放源字符串

目标空间必须可以修改

strcpy的模拟实现

strcpy函数返回的是目标函数的起始地址

arr 数组名表示数组首元素的地址,即首字符的地址

要保证有足够的空间

首字符的地址就放到字符指针里面去

*dest找到一块空间,*src就找到一个值

assert保证指针的有效性,不能为空

char  arr[ ]={0};       里面只有一个元素

2.3.stract的使用和模拟实现(不保障自己给自己追加)

后附src所指向的空终止字节字符串的副本到dest所指向的空终止字节字符串的结尾。字符src[0]替换dest末尾的空终止符,产生的字节字符串是空终止的

char * my_strcpy(char *dest,const char * src)

字符串追加

找到目标空间的末尾的\0

再将源字符串拷贝过来

会覆盖\0

源字符串必须以'\0'结束

目标字符中也得有\0,否则没有办法知道从哪里开始

目标空间必须足够大,能容纳下源字符串的内容

目标空间必须可以修改

stract的模拟实现

strcpy函数返回的是目标函数的起始地址

while循环得有循环语句所以加一个分号(;)------空语句

2.4.strcmp的使用和模拟实现

是用来比较字符串的,比较的不是字符串的长度,而是对应位置上的字符大小

int  my_strcmp(const char * str1,const char * str2)

第一个字符串大于第二个字符串则返回大于0的数

第一个字符串等于第二个字符串则返回0

第一个字符串小于第二个字符串则返回小于0的数

vs            标准

-1              <0

0               0

1               >0

模拟实现

1.                                                                              2.

2.5.strncpy函数的使用

char  *  strncpy(char  *  destination ,const  char  *  source,size_t number);

拷贝num个字符从源字符串到空间

如果源字符串的长度小于num,则拷贝源字符串后,在目标的后面追加0,直到num个

不拷贝\0,不够时拷贝\0

1.如果src指向的字符串长度小于n

strncpy()函数在拷贝时连同字符串在末尾的空字符'\0'一起拷贝,并在拷贝后的字符串末尾填充空字符'\0',凑齐n个字符

2.如果src指向的字符串长度大于n

strncpy()函数在拷贝时仅拷贝字符串的前n个字符,且不在拷贝后的字符串末尾添加空字符'\0'

                         

模拟使用

2.6 strnact函数的使用(可以实现自己给自己追加)

char  *  strncat  (  char  *  destination,const char  *  source ,size_t);

将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加一个 \0 字符

如果source指向的字符串的长度小于num的时候,只会将字符串中到 \0 的内容追加到destination指向的字符串末尾,不会像strncpy一样补充\0

使用

2.7  strncmp函数的使用

int  strncmp ( const  char  *  str1,const  char  *  str2,size_t num);

比较str1和str2的前num个字符,如果相等就继续往后比较,最多比较num个字母,如果num个字符都相等,则返回0

实现

2.8 strtok函数的使用

char  *  strtok (char  *  str ,const   char  *  sep);

1)sep参数指向一个字符串,定义了用作分隔符的字符集合

2)第一个参数指定一个字符串,它包含了0个或多个由sep字符串中一个或者多个分隔分割的标记

3)strtok函数找到str中的下一个标记,并将其用\0结尾,返回这个标记的指针

(strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可以修改)

4)strtok函数的第一个参数不为NULL,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置

5)strtok函数的第一个参数为NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记

6)如果字符串不存在更多的标记,则返回NULL指针

使用

把要切的字符串里的分割符作为一个字符串传过去

会记住\0的位置

2.9  strstr的模拟和实现

char * strstr ( const char * str1,const char * str2);

函数返回字符串str2在字符串str1中第一次出现的位置

字符串的比较匹配不包含\0字符,以\0作为结束标志

在str1中找str2这个字符串,第一次出现的位置如果找到了就返回这个第一次出现的起始地址,如果找不到就返回NULL

存在一次就匹配成功和多次匹配成功的情况

模拟实现

2.10  strerror函数的使用

strerror函数可以把参数部分错误码对应的错误信息的字符串的地址返回来,

再用%s就可以打印错误信息

在不同的系统和C语言标准库的实现中都规定了一些错误码,一般是放在errno.h这个头文件中说明的,C语言程序启动的时候就会使用一个全面的变量errno来记录程序的当前错误码,程序启动时表示没有错误,当我们在使用标准库函数的时候发生了某种错误,就会将对应对应的错误码存放在errno中,每一个错误码都有一个对应的错误信息strerror函数可以把参数部分错误码对应的错误信息的字符串的地址返回

errno   全局变量

调用C语言的库函数

使用

perror函数,直接将错误信息打印出来

perror函数打印完参数部分的字符串后,再打印一个冒号和一个空格,再打印错误信息

strerror   --    将错误信息对应的字符串的起始地址返回

perror     --    将errno中错误对应的信息打印出来

perror函数先打印str指向的字符串,打印:,再打印一个空格,再打印错误码对应的错误信息

perror==printf+strerror

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值