字符串函数和内存函数以及cplusplus.com/的使用技巧(一看就会)

简介: 字符串函数和内存函数以及cplusplus.com/的使用技巧(一看就会)

前言


关于学习库函数的问题,非常推荐这个网站,https://cplusplus.com/  是C++官方的网站记录了C语言所有的库函数,包含了其传参的数据类型 返回值 以及使用方式的举例

4c6d9d3e096048d9a6b684d5310e69af.png

点击这个,将切换成旧的版本方便通过直接搜索来查找库函数。

c5d88f6d0e8245fc8974e3cb50446d13.png

这里便介绍了各个库函数的各种参数,便于学生进行学习

1c2ceb9ff73846fc8f9884e29b0eaf27.png

左侧栏表明使用这个库函数需要引用什么头文件,而绿色字体表明了函数的返回值以及需要传入的参数的数据类型,中间的内容则告诉我们这个库函数的运用场景和用途,这时如果对于返回值还不是很明白的话,再下面的 Return Value 便会告诉我们返回值究竟代表的是什么意思。再下面的Example 更是直接举例告诉我们该如何使用这个库函数。

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


strlen


bf4638a2c58645bd8446647545ae174c.png

通过阅读资料我们可以知道这个库函数是用于获取字符串的长度的,然后返回这个值,需要传参一个字符串给这个函数才能运行。于是便可以这样写。

image.png

值得注意的是,我们需要引用这个函数的头文件也就是 <string.h>  才能使用这个函数,之后用一个值接收,这个值就是我们所求的字符串的长度了。

strcpy


image.png

这个函数的用途是拷贝字符串,需要有一个拷贝目的地的地址以及要拷贝源头的地址,最终返回拷贝完之后的目的地的地址。

我们初始化两个数组,经过拷贝后我们可以观察到第一个数组被拷贝到了第二个元素。

16d4730d1bf040dc86ad38c00586d15d.png

当我们用可视化的方式进行对数组的定义的时候,通过监视我们可以发现,strcpy在拷贝字符串的时候也会将作为字符串结尾的 ‘\0' 一并拷贝过来。在学习一个库函数的时候,要牢记其性质和应用 背景,才能在需要使用的时候,准确地使用。

8a132b3c8dc443e0a23fc085839acfdc.png

strcat


image.png

我们可以看出,这个库函数的作用便是在目标字符串之后追加我们需要的字符串。并返回目标字符串的地址。

image.png

我们再次在目标字符串后加上 x 使字符串结尾可视化,由于需要用 \0 作为结尾让strcat识别。

b50ea7ac6ee94f16a3926ee3b2ae8b05.png

于是我们观察到 strcat 在追加的时候会将源头字符串的 \0 一并追加到目标字符串中。

strcmp


该函数用于字符串之间的比较。

04f7d21d2ab74db1afe229891370515d.png

值得注意的是,这个函数是一个字符一个字符地比较,当有字符不同的时候,比较两个字符的ASCII 码值如果第一个字符小于第二个字符则返回小于 0 的值,相反则返回大于 0 的值,而相等则返回 0

image.png

f 的ASCII码值小于 q 所以返回一个负值

strstr


这个库函数用于在一个字符串中查找另一个字符串是否存在,然后返回第一个另一个字符串出现的第一个字符的地址,如果没有查找到就会返回一个空指针。

8526ab0c588848f99856b51b75b6c612.png

image.png

image.png

strtok


这个函数接收一个字符串和指向需要识别的字符串的指针,之后将目标字符替换成 \0 ,第二次调用时则会使用NULL 则会自动从上次保存的位置开始运行,同时该函数会在原函数上修改。之后返回被截取字符串的首元素地址,而当字符串结束后会返回一个空指针。

image.png

image.png

长度受限制的字符串函数


strncpy


strncmp


在使用上这两个函数与原函数的区别就是在传递两个字符串的基础上增加一个限制范围。

e332292e8259486c88dc568da8f331fd.png

image.png

正如这串代码,即便第五个字符不同但是我们将字符限定在四个字符之中,所以最后的结果还是0。

内存函数


内存函数相对于字符串函数来说更加地自由。可以直接于内存中进行修改。

memcpy


d67fbdea90464c9f94a8e0557dc4f370.png

这个函数于 strncpy 十分地类似一样是传输两个地址之后限定一个范围进行拷贝,值得注意的是这个函数不仅局限于拷贝字符串,同时限定参数的单位是字节。

image.png

如此我们就把整型的数据拷贝到另一个数组之中。

memmove


image.png

我们知道,内存拷贝的时候是会直接在内存中对数据进行修改,若我们想要实现自己对自己的拷贝的时候,直接拷贝便可能会引发拷贝出错的情况。

image.png

我们若想将蓝框中内容拷贝到绿框之中,若直接拷贝在我们拷贝 4 的时候便会出错,因为在一开始 2 便已经替代掉 4 的位置了,所以再之后拷贝时拷贝出来的便是 2

为了避免这种情况,就出现了 memove 这个函数,便可以直接避免这种情况。

image.png

memcmp


image.png

strncmp 相似但是限制参数的单位十分重要(为1个字节)。经过比较后返回大于小于或者等于0 的值。

如此我们这次的字符串以及内存函数就到此位置了,如果喜欢本篇文章就留下个赞吧,关注博主不迷路,也欢迎大家在评论区留言讨论,谢谢大家。

目录
相关文章
|
2月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
37 3
|
14天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
45 6
|
2月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
2月前
|
存储 程序员 编译器
C语言——动态内存管理与内存操作函数
C语言——动态内存管理与内存操作函数
|
2月前
|
编译器 C语言 C++
详解C/C++动态内存函数(malloc、free、calloc、realloc)
详解C/C++动态内存函数(malloc、free、calloc、realloc)
304 1
|
2月前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
34 0
|
2月前
|
C语言 C++
c语言回顾-内存操作函数
c语言回顾-内存操作函数
43 0
|
2月前
|
存储 C语言 C++
来不及哀悼了,接下来上场的是C语言内存函数memcpy,memmove,memset,memcmp
本文详细介绍了C语言中的四个内存操作函数:memcpy用于无重叠复制,memmove处理重叠内存,memset用于填充特定值,memcmp用于内存区域比较。通过实例展示了它们的用法和注意事项。
75 0
|
2月前
一刻也没有为它哀悼~接下来登场的是动态内存分配的malloc与realloc以及free函数
一刻也没有为它哀悼~接下来登场的是动态内存分配的malloc与realloc以及free函数
78 0
|
22天前
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
174 1