C語言中字符串的內(nèi)存地址操作的相關(guān)函數(shù)簡介
C語言bcopy()函數(shù):復(fù)制內(nèi)存(字符串)
頭文件:
#include <string.h>
bcopy() 函數(shù)用來復(fù)制內(nèi)存(字符串),其原型為:
void bcopy(const void *src, void *dest, int n);
【參數(shù)】src 為源內(nèi)存塊(字符串)指針,dest 為目標(biāo)內(nèi)存塊(字符串)指針,n 為要復(fù)制的內(nèi)存(字符串)的前 n 個(gè)字節(jié)長度。
bcopy()與memcpy()一樣都是用來拷貝src 所指的內(nèi)存內(nèi)容前n 個(gè)字節(jié)到dest 所指的地址,不過參數(shù)src 與dest 在傳給函數(shù)時(shí)是相反的位置。
bcopy() 不檢查內(nèi)存(字符串)中的空字節(jié) NULL。
實(shí)際上,bcopy() 和 memcpy() 功能相同,用來復(fù)制內(nèi)存塊的前 n 個(gè)字節(jié),但是 s1, s2 兩個(gè)參數(shù)為指針,又很奇怪的位于 string.h 文件中,所以也可以用來復(fù)制字符串。
注意:bcopy() 不是標(biāo)準(zhǔn)函數(shù),沒有在ANSI中定義,筆者在VC6.0和MinGW5下編譯沒通過;據(jù)稱Linux下的GCC支持,不過筆者沒有親測。鑒于此,還是使用 memcpy() 替代吧。
更多信息請查看:C語言bcopy()和memcpy()、bzero()和memset()、bcmp()和memcmp()幾個(gè)函數(shù)的差別
筆者定義了一個(gè)宏,在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]); }
執(zhí)行結(jié)果:
bcopy() : string(a) memcpy() :string(a)
C語言bzero()函數(shù):將內(nèi)存(字符串)前n個(gè)字節(jié)清零
頭文件:
#include <string.h>
bzero() 會(huì)將內(nèi)存塊(字符串)的前n個(gè)字節(jié)清零,其原型為:
void bzero(void *s, int n);
【參數(shù)】s為內(nèi)存(字符串)指針,n 為需要清零的字節(jié)數(shù)。
bzero()會(huì)將參數(shù)s 所指的內(nèi)存區(qū)域前n 個(gè)字節(jié),全部設(shè)為零值。
實(shí)際上,bzero(void *s, int n) 等價(jià)于 memset((void*)s, 0,size_tn),用來將內(nèi)存塊的前 n 個(gè)字節(jié)清零,但是 s 參數(shù)為指針,又很奇怪的位于 string.h 文件中,也可以用來清零字符串。
注意:bzero() 不是標(biāo)準(zhǔn)函數(shù),沒有在ANSI中定義,筆者在VC6.0和MinGW5下編譯沒通過;據(jù)稱Linux下的GCC支持,不過筆者沒有親測。鑒于此,還是使用 memset() 替代吧。
C語言bcmp()函數(shù):比較內(nèi)存(字符串)的前n個(gè)字節(jié)是否相等
頭文件:
#include <string.h>
bcmp() 比較內(nèi)存(字符串)的前n個(gè)字節(jié)是否相等,其原型為:
int bcmp(const void *s1, const void * s2, int n);
【參數(shù)】s1, s2 為需要比較的兩塊內(nèi)存(或兩個(gè)字符串),n 為要比較的長度。
【返回值】如果 s1, s2 的前 n 個(gè)字節(jié)相等或者 n 等于 0,則返回 0,否則返回非 0 值。
bcmp() 函數(shù)不檢查NULL。
實(shí)際上,bcmp() 和 memcmp() 功能相同,用來比較內(nèi)存塊的前 n 個(gè)字節(jié)是否相等,但是 s1, s2 兩個(gè)參數(shù)為指針,又很奇怪的位于 string.h 文件中,也可以用來比較字符串。
注意:bcmp() 不是標(biāo)準(zhǔn)函數(shù),沒有在ANSI中定義,筆者在VC6.0和MinGW5下編譯沒通過;據(jù)稱Linux下的GCC支持,不過筆者沒有親測。鑒于此,還是使用 memcmp() 替代吧。
勉為其難的舉個(gè)例子吧:
復(fù)制純文本新窗口
#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語言中g(shù)etgid()函數(shù)和getegid()函數(shù)的區(qū)別
欄 目:C語言
下一篇:C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
本文標(biāo)題:C語言中字符串的內(nèi)存地址操作的相關(guān)函數(shù)簡介
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2836.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢data目錄下的sessions文件夾有什