最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言的strcpy函數(shù)你了解嗎

 更新時間:2022年03月22日 10:26:42   作者:威威沁沁  
這篇文章主要為大家詳細(xì)介紹了C語言的strcpy函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

strcpy

拷貝字符串到目標(biāo)地址

函數(shù)原型

char *strcpy( char * destination, const char * source )

參數(shù)講解

參數(shù)destinationsource
解釋目標(biāo)字符串地址以 Null 結(jié)尾的源字符串地址

返回值詳解

這些函數(shù)中的每一個都返回目標(biāo)字符串,沒有返回值就是拷貝失敗。

函數(shù)詳解

strcpy使用時幾個注意點

 第一個注意點:源字符串必須以‘\0’結(jié)束,同時會將源字符串中的‘\0’拷貝到目標(biāo)空間。

就是說當(dāng)我們把源字符串拷貝到目標(biāo)地址時什么時候停止呢,就是當(dāng)把源字符串中的‘\0’也拷貝過去時結(jié)束。

用以下代碼為例,就是說當(dāng)arr2中f拷貝到arr1中時,strcpy還會把arr2中的‘\0’拷貝到arr1中

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[8];
	char arr2[] = "abcdef";
 
	strcpy(arr1, arr2);
 
	printf("%s\n", arr1);
	return 0;
}

 而如果arr2中沒有‘\0’時,看如下圖片所示,strcpy會越界訪問直到程序崩潰!

 而當(dāng)給arr2中添加'\0'時,程序就很容易就編譯過去了 

所以在源地址中一定要存在'\0'

第二個注意點:目標(biāo)空間必須足夠大,以確保能存放源字符串

假如我們把arr2中的七個字符拷貝到arr1中去,遺憾的是arr1只有四個空間不夠大,這時我們還調(diào)用strcpy,就會發(fā)現(xiàn)程序崩了!

 為什么程序會崩了呢?原因很簡單,就是‘裝不下’,arr1的??臻g被破壞了。

而作為程序員的我們,必須保證目標(biāo)空間足夠大,strcpy本身是不考慮這些問題的(很滑稽是不是,有一種你叫我干啥我干啥,出事了還怪我嘍的味道)

第三個注意點:目標(biāo)空間必須可變

例如下面這個代碼,arr1指向"qwertyuiop"(這個字符串足夠長吧),現(xiàn)在要求把arr2中的字符串拷貝到arr1中去,大家覺得結(jié)果會是什么?

#include<stdio.h>
#include<string.h>
int main()
{
	char* arr1 = "qwertyuiop";
	char arr2[] = "abcedf";
	strcpy(arr1, arr2);
 
	printf("%s", arr1);
	return 0;
}

看到這想必大家心理應(yīng)該都有答案了,調(diào)試一下發(fā)現(xiàn)程序又崩了!這是為什么呢?

 就是因為arr1指向的是常量字符串,常量是不可修改的。如果非要寫成代碼去修改它,抱歉只能報錯了。所以大家使用strcpy是目的地必須是可修改的。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!    

相關(guān)文章

  • C++類與對象的基礎(chǔ)知識點詳細(xì)分析

    C++類與對象的基礎(chǔ)知識點詳細(xì)分析

    類和對象是兩種以計算機為載體的計算機語言的合稱。對象是對客觀事物的抽象,類是對對象的抽象。類是一種抽象的數(shù)據(jù)類型;變量就是可以變化的量,存儲在內(nèi)存中—個可以擁有在某個范圍內(nèi)的可變存儲區(qū)域
    2023-02-02
  • 利用C語言實現(xiàn)掃雷游戲

    利用C語言實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了利用C語言實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++二維數(shù)組中的查找算法示例

    C++二維數(shù)組中的查找算法示例

    這篇文章主要介紹了C++二維數(shù)組中的查找算法,結(jié)合實例形式分析了C++二維數(shù)組進(jìn)行查找的原理與具體實現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05
  • C++ 數(shù)字的反轉(zhuǎn)實現(xiàn)實例

    C++ 數(shù)字的反轉(zhuǎn)實現(xiàn)實例

    這篇文章主要介紹了C++ 數(shù)字的反轉(zhuǎn)實現(xiàn)實例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++中map容器的具體使用

    C++中map容器的具體使用

    本文主要介紹了C++中map容器的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C++  線程(串行 并行 同步 異步)詳解

    C++ 線程(串行 并行 同步 異步)詳解

    這篇文章主要介紹了C++ 線程(串行 并行 同步 異步)詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C++中new的越界訪問問題

    C++中new的越界訪問問題

    越界訪問指訪問了不是程序申請的內(nèi)存區(qū)域,比如申請了5個字節(jié)的char數(shù)組,結(jié)果讀寫數(shù)據(jù)的第六個元素,或者訪問了釋放后的內(nèi)存等等。
    2016-04-04
  • c++獲取sqlite3數(shù)據(jù)庫表中所有字段的方法小結(jié)

    c++獲取sqlite3數(shù)據(jù)庫表中所有字段的方法小結(jié)

    本文給大家分享c++獲取sqlite3數(shù)據(jù)庫表中所有字段的三種常用方法,本文針對每一種方法給大家詳細(xì)介紹,需要的的朋友通過本文一起學(xué)習(xí)吧
    2016-11-11
  • C/C++通過SQLite SDK實現(xiàn)數(shù)據(jù)庫增刪改查操作

    C/C++通過SQLite SDK實現(xiàn)數(shù)據(jù)庫增刪改查操作

    SQLite,作為一款嵌入式關(guān)系型數(shù)據(jù)庫管理系統(tǒng),一直以其輕量級、零配置以及跨平臺等特性而備受青睞,本文主要介紹了C++如何通過SQLite SDK實現(xiàn)數(shù)據(jù)庫增刪改查操作,感興趣的可以了解下
    2023-11-11
  • VC解析XML文件-CMarkup的使用詳解

    VC解析XML文件-CMarkup的使用詳解

    本篇文章是對VC解析XML文件-CMarkup的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05

最新評論

高阳县| 萨迦县| 锡林浩特市| 新密市| 平舆县| 盐津县| 奇台县| 堆龙德庆县| 封开县| 昌黎县| 临沭县| 牡丹江市| 镇平县| 崇州市| 萨迦县| 开化县| 巴林右旗| 樟树市| 涡阳县| 金山区| 磴口县| 阿拉尔市| 额尔古纳市| 仁化县| 罗甸县| 濮阳县| 枞阳县| 河东区| 永胜县| 栖霞市| 门头沟区| 麻栗坡县| 荔浦县| 乌拉特前旗| 塔城市| 龙岩市| 阳朔县| 抚顺市| 剑河县| 成安县| 获嘉县|