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,c) main(){ char dest[30] = "string(a)"; char src[30] = "string string"; 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,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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 关于AJAX loading .....效果
- 封锁C-Struct与双打到C# – 正值错误
- oracle – ORA-00942:可以选择“schema.table”而不是“ta
- c# – 复制/剪切合并的代码,并在粘贴时将其折叠
- 正则表达式 符号 解释
- c# – DropDownList项在发布到编辑表单时为null
- ruby-on-rails – 使用RVM Gemsets&Bundler和RubyMine
- ruby-on-rails – 使用rails中的helper方法向HAML标记添加动
- c# – Request.HttpContext.Connection.ClientCertificate始
- c# – 如何使用VS2008中的“短样式”属性设置默认值(自动属