C語言 memcpy 和 strcpy 函數(shù)區(qū)別 - C語言零基礎(chǔ)入門教程

目錄

零基礎(chǔ) C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎(chǔ)入門

一.memcpy 函數(shù)/strcpy 函數(shù)簡介

C 語言string.hstrcpy 函數(shù)和 memcpy 函數(shù),都可以完成 char 字符串拷貝,注意:

1.strcpy 函數(shù)strcpy_s 函數(shù)在拷貝過程中屋摔,如果遇到'\0'結(jié)束符俺叭,那么直接結(jié)束拷貝;memcpy 函數(shù)拷貝過程中就算遇到'\0'結(jié)束符也不會結(jié)束房蝉;

2.如果使用 memcpy 或者 strcpy 函數(shù)都會提示 error:4996,編譯器更加推薦使用 strcpy_s 函數(shù)或者 memcpy_s 函數(shù),否則也可以參考:error C4996: ‘fopen’: This function or variable may be unsafe

error C4996: 'memcpy': This function or variable may be unsafe. Consider using memcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

3.不管是 memcpy 函數(shù)或者 strcpy 函數(shù) 必須保證 dst 空間足夠大风皿,能夠容納 src 龟虎,如果 dst 內(nèi)存空間大小比 src 更小璃谨,會導致溢出錯誤,引起程序崩潰!可以通過 sizeof 函數(shù)查看內(nèi)存內(nèi)存大小佳吞,舉個例子:50ml 的水杯能倒進 500ml 的水杯沒問題拱雏,500ml 的水杯倒進 50ml 的水杯,會溢出很多水底扳;

二.memcpy 函數(shù)/strcpy 函數(shù)實戰(zhàn)

1.strcpy 函數(shù)屬于字符串拷貝

char 字符串中有作介紹铸抑,字符串默認都是'\0'結(jié)尾,strcpy 函數(shù)或者 strcpy_s 函數(shù)在拷貝過程中衷模,如果遇到'\0'結(jié)束符鹊汛,那么直接結(jié)束拷貝,看下面例子:

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 memcpy 和 strcpy 函數(shù)區(qū)別
//@Time:2021/06/04 08:00
//@Motto:不積跬步無以至千里阱冶,不積小流無以成江海刁憋,程序人生的精彩需要堅持不懈地積累!
/******************************************************************************************/

#include "stdafx.h"
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include "windows.h"
//error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
#pragma warning( disable : 4996)
void main()
{
    char src[1024] = { "C/C++教程-strcpy函數(shù)\0 - www.codersrc.com" };
    char dst[1024] = { 0 };
    printf("strcpy之前 dst:%s\n", dst);
    strcpy(dst, src );
    printf("strcpy之后 dst:%s\n", dst);
    printf("\n");
    system("pause");
/*
輸出:
strcpy之前 dst:
strcpy之后 dst:C/C++教程-strcpy函數(shù)
請按任意鍵繼續(xù). . .
*/

重上面的輸出結(jié)果可以看出:strcpy 函數(shù)在拷貝的時候木蹬,如果遇到'\0'职祷,那么拷貝直接結(jié)束,所以上面使用 strcpy 拷貝的時候届囚,dst 字符串明顯少了一段字符" - www.codersrc.com";

2.memcpy 函數(shù)屬于內(nèi)存拷貝

而 memcpy 函數(shù)不同有梆,memcpy 屬于內(nèi)存拷貝,即便在拷貝過程中遇到'\0'結(jié)束符意系,也不會結(jié)束拷貝泥耀,舉個例子:

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 memcpy 和 strcpy 函數(shù)區(qū)別
//@Time:2021/06/04 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海蛔添,程序人生的精彩需要堅持不懈地積累痰催!
/******************************************************************************************/

char src[1024] = { "C/C++教程-memcpy函數(shù)\0 - www.codersrc.com" };
char dst[1024] = { 0 };
printf("memcpy之前 dst:%s\n", dst);
memcpy(dst, src);
printf("memcpy之后 dst:%s\n", dst);
printf("\n");
system("pause");

/*
輸出:

memcpy之前 dst:
memcpy之后 dst:C/C++教程-memcpy函數(shù)\0 - www.codersrc.com
請按任意鍵繼續(xù). . .
*/

很明顯,memcpy 函數(shù)內(nèi)存拷貝的時候迎瞧,'\0'僅僅是當作了內(nèi)存中的數(shù)據(jù)夸溶,并不代表拷貝結(jié)尾;

三.猜你喜歡

  1. 安裝 Visual Studio
  2. 安裝 Visual Studio 插件 Visual Assist
  3. Visual Studio 2008 卸載
  4. Visual Studio 2003/2015 卸載
  5. C 語言格式控制符/占位符
  6. C 語言邏輯運算符
  7. C 語言三目運算符
  8. C 語言逗號表達式
  9. C 語言自加自減運算符(++i / i++)
  10. C 語言 do while 和 while 循環(huán)
  11. C 語言 switch 語句
  12. C 語言 goto 語句
  13. C 語言 char 字符串
  14. C 語言 strlen 函數(shù)
  15. C 語言 sizeof 函數(shù)
  16. C 語言 sizeof 和 strlen 函數(shù)區(qū)別
  17. C 語言 strcpy 函數(shù)
  18. C 語言 strcpy_s 函數(shù)
  19. C 語言 strcpy 和 strcpy_s 函數(shù)區(qū)別
  20. C 語言 memcpy 和 strcpy 函數(shù)區(qū)別

未經(jīng)允許不得轉(zhuǎn)載:猿說編程 ? C 語言 memcpy 和 strcpy 函數(shù)區(qū)別

本文由博客 - 猿說編程 猿說編程 發(fā)布凶硅!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缝裁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子足绅,更是在濱河造成了極大的恐慌捷绑,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氢妈,死亡現(xiàn)場離奇詭異粹污,居然都是意外死亡,警方通過查閱死者的電腦和手機首量,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門壮吩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來进苍,“玉大人,你說我怎么就攤上這事鸭叙【醢。” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵递雀,是天一觀的道長。 經(jīng)常有香客問我蚀浆,道長缀程,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任市俊,我火速辦了婚禮杨凑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘摆昧。我一直安慰自己撩满,他們只是感情好,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布绅你。 她就那樣靜靜地躺著伺帘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忌锯。 梳的紋絲不亂的頭發(fā)上伪嫁,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音偶垮,去河邊找鬼张咳。 笑死,一個胖子當著我的面吹牛似舵,可吹牛的內(nèi)容都是我干的脚猾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼砚哗,長吁一口氣:“原來是場噩夢啊……” “哼龙助!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蛛芥,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤泌参,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后常空,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沽一,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年漓糙,在試婚紗的時候發(fā)現(xiàn)自己被綠了铣缠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蝗蛙,靈堂內(nèi)的尸體忽然破棺而出蝇庭,到底是詐尸還是另有隱情,我是刑警寧澤捡硅,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布哮内,位于F島的核電站,受9級特大地震影響壮韭,放射性物質(zhì)發(fā)生泄漏北发。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一喷屋、第九天 我趴在偏房一處隱蔽的房頂上張望琳拨。 院中可真熱鬧,春花似錦屯曹、人聲如沸狱庇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽密任。三九已至,卻和暖如春偷俭,著一層夾襖步出監(jiān)牢的瞬間批什,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工社搅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驻债,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓形葬,卻偏偏與公主長得像合呐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子笙以,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容