a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

C語言中字符串的內存地址操作的相關函數簡介

2020-01-26 14:57:18
字體:
來源:轉載
供稿:網友

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;}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 国产探花在线精品一区二区 | 亚洲精品日韩激情在线电影 | 亚洲欧美日韩另类精品一区二区三区 | 日本综合视频 | 99免费视频 | 色999国产 | www.亚洲 | 欧美理论影院 | 国产精品视频免费观看 | 污网址在线 | 麻豆视频91| 国产欧美日韩综合精品 | 在线视频a | 亚洲成人精品在线 | 男女在线视频 | www.av在线 | 黄色国产一级视频 | 午夜午夜精品一区二区三区文 | 国产精品久久久久久久久久三级 | 亚洲成人一区二区三区 | 天堂一区二区三区在线 | 欧洲美女7788成人免费视频 | 无套内谢孕妇毛片免费看红桃影视 | 91久久| 亚洲天天干 | 日韩三级av | 亚洲免费一级片 | 中文字幕自拍偷拍 | 成人a视频| 亚洲成人在线视频观看 | 热久久这里只有精品 | 久久久久久黄 | 午夜视频| 日本一级淫片免费看 | 一区视频 | 在线国产欧美 | 日韩中文字幕免费在线播放 | 可以看黄色的网站 | 久久久久久久香蕉 | 成人在线免费观看视频 | 欧美精品久 |