字符串处理函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串处理函数相关的知识,希望对你有一定的参考价值。
memcpy函数:
- 将以 src 为起始地址处的内容复制 n 个字节到以 dest 为起始地址处的内存中去。但是memcpy函数有个限制,就是 不能出现内存重叠,否则其行为是未知的。所以使用memcpy函数的时候必须保证 不会出现内存重叠 的情况。但是基本上现在的库都会将memcpy实现的和memmove类似。
memmove函数:
- 功能和memcpy函数的功能相同,但是会考虑源内存空间和目的内存空间重叠的问题,若出现重叠,memmove函数会先进行处理在进行复制(先把源内存空间的内容复制到一个临时存储空间中,再将内容复制到目的内存空间中)。可见memmove函数在出现内存重叠的情况时可以保证 dest 中数据的正确,但是不能保证 src 中的数据还是正确的。
memset函数:
- 给一段内存空间进行赋任意值。类似功能的函数还有bzero(此函数不能赋任意值,只能清零)。
memchr函数:
- 扫描从以 s 为起始地址的前 n 个字节,如果出现了数值 c ,那么返回数值 c 的地址,否则返回NULL。
memcmp函数:
- 对 s1 和 s2 开始前 n 个字节的内存空间进行比较,如果s1==s2,则返回 0 ;如果s1>s2,则返回 大于 0 的数;如果s1<s2,则返回 小于0 的数。
strcpy函数:
- 将 src 内存处的内容复制到 dest 内存处。遇到 ‘\\0‘ 后停止复制,而且 ‘\\0‘ 也会被复制到dest 内存中去。注意,不能出现内存重叠的情况。
strncpy函数:
- 将 src 内存中的内容复制到 dest 内存处。遇到 ‘\\0‘ 或者复制了 n 个字节后便停止,和strcpy类似,如果前 n 个字节中有 ‘\\0‘ ,则 ‘\\0‘ 也会复制到 dest 中去,如果前 n 个字节中没有 ‘\\0’,则 strncpy 函数不会在后面追加 ‘\\0‘ 。同样,strncpy函数也不能出现内存重叠的情况。
strcat函数:
- 将 src 中的内容追加到 dest 后面中去,在 src 中遇到 ‘\\0‘ 便结束,且将 ‘\\0‘ 添加到dest 后面。注意,这个函数也不会处理内存重叠的问题。
strncat函数:
- 将 src 中的内容追加到 dest 后面去,并且在遇到 ‘\\0‘ 或者复制了 n 个字符时便停止。和strncpy函数不同,strncpy函数在复制了 n 个字节后,是不会在追加 ‘\\0‘ 的,而 strncat 函数即使复制了 n 个字节,仍然会追加一个 ‘\\0‘ 。
以上是关于字符串处理函数的主要内容,如果未能解决你的问题,请参考以下文章