前言
关于学习库函数的问题,非常推荐这个网站,https://cplusplus.com/ 是C++官方的网站记录了C语言所有的库函数,包含了其传参的数据类型 返回值 以及使用方式的举例
点击这个,将切换成旧的版本方便通过直接搜索来查找库函数。
这里便介绍了各个库函数的各种参数,便于学生进行学习
左侧栏表明使用这个库函数需要引用什么头文件,而绿色字体表明了函数的返回值以及需要传入的参数的数据类型,中间的内容则告诉我们这个库函数的运用场景和用途,这时如果对于返回值还不是很明白的话,再下面的 Return Value 便会告诉我们返回值究竟代表的是什么意思。再下面的Example 更是直接举例告诉我们该如何使用这个库函数。
长度不受限制的字符串函数
strlen
通过阅读资料我们可以知道这个库函数是用于获取字符串的长度的,然后返回这个值,需要传参一个字符串给这个函数才能运行。于是便可以这样写。
值得注意的是,我们需要引用这个函数的头文件也就是 <string.h> 才能使用这个函数,之后用一个值接收,这个值就是我们所求的字符串的长度了。
strcpy
这个函数的用途是拷贝字符串,需要有一个拷贝目的地的地址以及要拷贝源头的地址,最终返回拷贝完之后的目的地的地址。
我们初始化两个数组,经过拷贝后我们可以观察到第一个数组被拷贝到了第二个元素。
当我们用可视化的方式进行对数组的定义的时候,通过监视我们可以发现,strcpy在拷贝字符串的时候也会将作为字符串结尾的 ‘\0' 一并拷贝过来。在学习一个库函数的时候,要牢记其性质和应用 背景,才能在需要使用的时候,准确地使用。
strcat
我们可以看出,这个库函数的作用便是在目标字符串之后追加我们需要的字符串。并返回目标字符串的地址。
我们再次在目标字符串后加上 x 使字符串结尾可视化,由于需要用 \0 作为结尾让strcat识别。
于是我们观察到 strcat 在追加的时候会将源头字符串的 \0 一并追加到目标字符串中。
strcmp
该函数用于字符串之间的比较。
值得注意的是,这个函数是一个字符一个字符地比较,当有字符不同的时候,比较两个字符的ASCII 码值如果第一个字符小于第二个字符则返回小于 0 的值,相反则返回大于 0 的值,而相等则返回 0 。
f 的ASCII码值小于 q 所以返回一个负值
strstr
这个库函数用于在一个字符串中查找另一个字符串是否存在,然后返回第一个另一个字符串出现的第一个字符的地址,如果没有查找到就会返回一个空指针。
strtok
这个函数接收一个字符串和指向需要识别的字符串的指针,之后将目标字符替换成 \0 ,第二次调用时则会使用NULL 则会自动从上次保存的位置开始运行,同时该函数会在原函数上修改。之后返回被截取字符串的首元素地址,而当字符串结束后会返回一个空指针。
长度受限制的字符串函数
strncpy
strncmp
在使用上这两个函数与原函数的区别就是在传递两个字符串的基础上增加一个限制范围。
正如这串代码,即便第五个字符不同但是我们将字符限定在四个字符之中,所以最后的结果还是0。
内存函数
内存函数相对于字符串函数来说更加地自由。可以直接于内存中进行修改。
memcpy
这个函数于 strncpy 十分地类似一样是传输两个地址之后限定一个范围进行拷贝,值得注意的是这个函数不仅局限于拷贝字符串,同时限定参数的单位是字节。
如此我们就把整型的数据拷贝到另一个数组之中。
memmove
我们知道,内存拷贝的时候是会直接在内存中对数据进行修改,若我们想要实现自己对自己的拷贝的时候,直接拷贝便可能会引发拷贝出错的情况。
我们若想将蓝框中内容拷贝到绿框之中,若直接拷贝在我们拷贝 4 的时候便会出错,因为在一开始 2 便已经替代掉 4 的位置了,所以再之后拷贝时拷贝出来的便是 2 。
为了避免这种情况,就出现了 memove 这个函数,便可以直接避免这种情况。
memcmp
与 strncmp 相似但是限制参数的单位十分重要(为1个字节)。经过比较后返回大于小于或者等于0 的值。
如此我们这次的字符串以及内存函数就到此位置了,如果喜欢本篇文章就留下个赞吧,关注博主不迷路,也欢迎大家在评论区留言讨论,谢谢大家。