字符函数和字符串函数(1)

C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在

常量字符串 中或者 字符数组 中。

字符串常量 适用于那些对它不做修改的字符串函数.

一.求字符串长度函数——strlen

函数原型为size_t strlen ( const char * str );

需要注意的是:

函数返回的是'\0'前面字符的数量,必须要有'\0'的符号才会终止。

同时函数的参数是size_t是无符号的。

下面是对strlen函数的简单模拟。

第一种方法递归

第二种方法双指针法

第三种方法

二.长度不受限制的字符串函数

strcpy

函数原型:char* strcpy(char * destination, const char * source );

函数的作用是将后者复制到前者之后。

需要注意的是:

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

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

  1. 并且目标空间必须足够大和可改写。

下面是对其的模拟实现

先找到目标字符串的'\0'位置,然后再将第二个字符串首字符覆盖到'\0'位置,然后之后对应赋值即可(因为是先使用在自加所以可以实现覆盖的能力)。

strcat

函数原型为:char * strcat ( char * destination, const char * source );

函数的作用是连接

需要注意的是:

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

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

目标空间必须可修改。

现在是对他的模拟:

strcmp

函数原型:int strcmp ( const char * str1, const char * str2 );

标准规定:

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

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

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

判断的原则是字典序。

现在是对他的模拟:

三.字符串查找

strstr

函数原型是char*strstr(const char* str1,const char *str2);

返回一个指向str1中第一次出现的str2的指针,或者如果str2不是str1的一部分,则返回一个空指针。

下面是对他的模拟实现。

strtok

函数的原型为char*strtok(char*str,const char*sep);

1.sep参数是字符串,定义用于作为分隔符的字符集合

2.第一个参数制定一个字符串,它包含0个或多个由sep字符串一个或者多个分隔符分割的标记。

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

中的位置。

四.错误信息报告

streeor

函数会返回错误码,所对应的错误信息。

因为错误信息在计算机是通过0,1,2,3,4,5等来存储的,我们无法直接通过错误码来得到错误的信息,也就无法知道哪里错怎么解决。

函数的原型是char*strerror(int errnum);

参数即为错误码

五内存操作函数

memcpy

函数的作用是将源信息覆盖到目标信息上

void*memcpy(void*destination,const void*source,size_t);

需要注意的是

  1. 函数memcpy从source的位置向后复制num个字节到destination的内存位置

  1. 但不足之处是如果source和destination有着重叠的话,复制的结果不会是我们想要的结果,这个需要memmove来解决,下面会说到。

下面是对其的模拟实现

memmove

该函数的原型与memcpy完全一样,它能够解决memcpy中无法解决的source和destination相互重叠的问题,核心思想是通过改变覆盖的顺序来实现的。

通过下面的模拟实现就可以看出,

memcmp

函数的原型是int memcmp(const void*ptr1,const void*ptr2,size_t num);

进行的操作是比较从ptr1和ptr2指针开始的num个字节。

比较的原则是字典序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值