1. 字符分类函数
2. 字符转换函数
3. strlen的使⽤和模拟实现
4. strcpy的使⽤和模拟实现
5. strcat的使⽤和模拟实现
6. strcmp的使⽤和模拟实现
7. strncpy函数的使⽤
8. strncat函数的使⽤
9. strncmp函数的使⽤
10. strstr的使⽤和模拟实现
11. strtok函数的使⽤
12. strerror函数的使⽤
今天的字符串函数有点小多哦,那么接下来,正文开始
1. 字符分类函数
C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。 这些函数的使⽤都需要包含⼀个头⽂件是 ctype.h
在这里我们主要说islower函数 ,这个函数表示的就如同他的名字一样,如果给他传进去的参数是小写字母,那么它的返回值就是1,如果传进去的值不是小写字母,是一个大写字母或者是其他值,那么说明参数不符合这个函数的参数,那么返回值就是0;
当然,要使用这个库函数就必须包含他的头文件。
我们来看一个例题,你猜他的结果是什么? 是小于吗,那恭喜你,错了。。
我们一起来看,他在图中,给出的是strlen函数,但是我们要知道的是,strlen函数的返回值是size_t类型的,意思是什么,意思就是这两个函数的返回值都是无符号的整型,无符号的整型减去无符号的整形,得到的结果也是无符号的整型
3-6的结果是-3,但是在无符号的整型中,它会被判断成一个极大的正这整数
3. strlen的使⽤和模拟实现
strlen函数作用于字符串
这是就是strlen函数,他的参数是一个指针,他的返回值是size_t无符号的整型。
用于测量字符串的长度,我们已经看到了这个函数,他的参数是一个指针,所以我们在使用这个函数的时候,只能给他传进去地址.
我们来看这个函数的实现
上图采用了递归的方法,没有创建新的变量。
4. strcpy函数的使用和模拟实现
我们来一起看看这个函数,这个函数和内存函数memcpy比较相似,但是参数和返回值略有不同,strncpy函数他的返回值是char*类型的,但是内存函数可不管你是什么类型的数据,它的返回值是void* 类型的,但是他们的返回值返回的都是复制完后目标函数的首地址。这是为了方便链式调用。
这个函数比较牛逼的就是,他会把源字符串中的\0也给他拷贝过去,这样使得目标字符串变成了一个完整的字符串,这个带有\0的字符串,保证在调用的时候不会出错。
上图就是函数的使用,把要拷贝的目的字符串放到首位,源字符串放到末尾,返回值是目标字符串的首地址。
接下来我们来尝试下,strcpy字符串函数的实现:
这就是函数的实现
5. strcat 的使⽤和模拟实现
stract函数的是一个追加函数,它的作用就是把原字符串追加到目标字符串里面:
-
具体的操作过程是:
strcat
函数首先会找到目标字符串dest
中的\0
字符(这是 C 语言中字符串结束的标志)。然后从这个\0
字符的位置开始,将源字符串src
中的字符逐个复制到目标字符串dest
中,直到遇到源字符串src
中的\0
字符为止。最后,在目标字符串dest
的新的末尾位置添加一个\0
字符来标记新的字符串结束位置。
这就是strcat函数的实现,
但是这个函数不能自己追加自己,不然他就会死循环。
6. strcmp的使⽤和模拟实现
第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字 ◦
第⼀个字符串等于第⼆个字符串,则返回0 ◦
第⼀个字符串⼩于第⼆个字符串,则返回⼩于0的数字
那么如何比较两个字符串的大小,比较的是字符串中ASCII码值的大小
这个函数和memcmp函数不一样,memcmp在进行比较的时候,她并不考虑比较的数据是什么,他只考虑比较的给定长度的字节序列
函数的实现
7. strncpy函数的使⽤
给它加上了限制,不会无节制的进行打印
其实也只是给他们加上了限制,限制了n个字节
10. strstr 的使⽤和模拟实现
我们先来看看这个函数的基本的形式,有两个参数,一个返回值,都是指针类型的
这个字符串函数的作用就是在str1里面查找str2,看他有没有出现过,如果他出现过,那么函数就返回他在str1里面第一次出现str2的位置,但是如果没有出现过,那就返回NULL空指针。
上图就是strstr函数的实现。
11. strtok函数的使⽤
这个函数有两个参数,一个是用来存放字符串,另一个是用来存放分隔符的。
sep参数指向⼀个字符串,定义了⽤作分隔符的字符集合,这个字符串里面全都是分隔符。
第⼀个参数指定⼀个字符串,它包含了0个或者多个由sep字符串中⼀个或者多个分隔符分割的标 记。
strtok函数找到str中的下⼀个标记,并将其⽤ \0 结尾,返回⼀个指向这个标记的指针。(注: strtok函数会改变被操作的字符串,所以被strtok函数切分的字符串⼀般都是临时拷⻉的内容并且 可修改。)所以我们在使用这个函数的时候,需要先对他进行一份拷贝,然后在进行。
strtok函数的第⼀个参数不为NULL,函数将找到str中第⼀个标记,strtok函数将保存它在字符串中的位置。
strtok函数的第⼀个参数为NULL,函数将在同⼀个字符串中被保存的位置开始,查找下⼀个标 记。
对于后续的调用(在第一次调用之后),需要将str
参数设置为NULL
。strtok
会记住它在原始字符串中的位置,继续从上次结束的位置开始查找下一个标记,直到找不到更多的标记(返回NULL
)
在上图中,我们就看到了他在开始的时候就先对原始的字符串进行了拷贝,防止以后会使用到原始的字符串。然后就是对他进行了一个for循环的连续调用,第一次调用的时候strtok函数的参数是字符串,等待到第二次以后的话,他的参数就变成了NULL的空指针。
标签:字符,函数,strtok,参数,字符串,返回值 From: https://blog.csdn.net/daiwoliyunshang/article/details/143744875