C语言中字符串的内存地址操作的相关函数简介
C语言bcopy()函数:复制内存(字符串)
头文件:
#include <string.h>
bcopy() 函数用来复制内存(字符串),其原型为:
void bcopy(const void *src, void *dest, int n);
【参数】src 为源内存块(字符串)指针,dest 为目标内存块(字符串)指针,n 为要复制的内存(字符串)的前 n 个字节长度。
bcopy()与memcpy()一样都是用来拷贝src 所指的内存内容前n 个字节到dest 所指的地址,不过参数src 与dest 在传给函数时是相反的位置。
bcopy() 不检查内存(字符串)中的空字节 NULL。
实际上,bcopy() 和 memcpy() 功能相同,用来复制内存块的前 n 个字节,但是 s1, s2 两个参数为指针,又很奇怪的位于 string.h 文件中,所以也可以用来复制字符串。
注意:bcopy() 不是标准函数,没有在ANSI中定义,笔者在VC6.0和MinGW5下编译没通过;据称Linux下的GCC支持,不过笔者没有亲测。鉴于此,还是使用 memcpy() 替代吧。
更多信息请查看:C语言bcopy()和memcpy()、bzero()和memset()、bcmp()和memcmp()几个函数的差别
笔者定义了一个宏,在VC6.0下编译通过,代码如下:
#include <stdio.h> #include <string.h> #define bcopy(a, b, c) memcpy(a, b, c) main(){ char dest[30] = "string(a)"; char src[30] = "string\0string"; int i; bcopy(src, dest, 30); //src 指针放在前 printf("bcopy(): "); for(i = 0; i < 30; i++) printf("%c", dest[i]); memcpy(dest, src, 30); //dest 指针放在钱 printf("\nmemcpy() : "); for(i = 0; i < 30; i++) printf("%c", dest[i]); }
执行结果:
bcopy() : string(a) memcpy() :string(a)
C语言bzero()函数:将内存(字符串)前n个字节清零
头文件:
#include <string.h>
bzero() 会将内存块(字符串)的前n个字节清零,其原型为:
void bzero(void *s, int n);
【参数】s为内存(字符串)指针,n 为需要清零的字节数。
bzero()会将参数s 所指的内存区域前n 个字节,全部设为零值。
实际上,bzero(void *s, int n) 等价于 memset((void*)s, 0,size_tn),用来将内存块的前 n 个字节清零,但是 s 参数为指针,又很奇怪的位于 string.h 文件中,也可以用来清零字符串。
注意:bzero() 不是标准函数,没有在ANSI中定义,笔者在VC6.0和MinGW5下编译没通过;据称Linux下的GCC支持,不过笔者没有亲测。鉴于此,还是使用 memset() 替代吧。
C语言bcmp()函数:比较内存(字符串)的前n个字节是否相等
头文件:
#include <string.h>
bcmp() 比较内存(字符串)的前n个字节是否相等,其原型为:
int bcmp(const void *s1, const void * s2, int n);
【参数】s1, s2 为需要比较的两块内存(或两个字符串),n 为要比较的长度。
【返回值】如果 s1, s2 的前 n 个字节相等或者 n 等于 0,则返回 0,否则返回非 0 值。
bcmp() 函数不检查NULL。
实际上,bcmp() 和 memcmp() 功能相同,用来比较内存块的前 n 个字节是否相等,但是 s1, s2 两个参数为指针,又很奇怪的位于 string.h 文件中,也可以用来比较字符串。
注意:bcmp() 不是标准函数,没有在ANSI中定义,笔者在VC6.0和MinGW5下编译没通过;据称Linux下的GCC支持,不过笔者没有亲测。鉴于此,还是使用 memcmp() 替代吧。
勉为其难的举个例子吧:
复制纯文本新窗口
#include <stdio.h> #include <string.h> int main () { char *s1 = "Golden Global View"; char *s2 = "Golden Global View"; if( !bcmp(s1, s2, 7) ) printf("s1 equal to s2 in first 7 bytes"); else printf("s1 not equal to s2 in first 7 bytes"); return 0; }
上一篇:详解C语言中getgid()函数和getegid()函数的区别
栏 目:C语言
下一篇:C语言中计算正弦的相关函数总结
本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/2836.html
您可能感兴趣的文章
- 04-02c语言函数调用后清空内存 c语言调用函数删除字符
- 04-02c语言的正则匹配函数 c语言正则表达式函数库
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言中对数函数的表达式 c语言中对数怎么表达
- 04-02c语言用函数写分段 用c语言表示分段函数
- 04-02c语言编写函数冒泡排序 c语言冒泡排序法函数
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段函数
- 04-02C语言中怎么打出三角函数 c语言中怎么打出三角函数的值
- 04-02c语言调用函数求fibo C语言调用函数求阶乘
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 04-02jquery与jsp,用jquery
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-11ajax实现页面的局部加载
- 01-10C#中split用法实例总结
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-10delphi制作wav文件的方法
- 01-10SublimeText编译C开发环境设置
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 08-05DEDE织梦data目录下的sessions文件夹有什