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

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

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

strcpy

拷貝字符串到目標地址

函數(shù)原型

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

參數(shù)講解

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

返回值詳解

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

函數(shù)詳解

strcpy使用時幾個注意點

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

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

用以下代碼為例,就是說當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會越界訪問直到程序崩潰!

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

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

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

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

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

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

第三個注意點:目標空間必須可變

例如下面這個代碼,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ǔ)知識點詳細分析

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

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

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

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

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

    這篇文章主要介紹了C++二維數(shù)組中的查找算法,結(jié)合實例形式分析了C++二維數(shù)組進行查找的原理與具體實現(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容器的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(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ù)庫表中所有字段的三種常用方法,本文針對每一種方法給大家詳細介紹,需要的的朋友通過本文一起學(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的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論

龙海市| 和硕县| 万盛区| 广元市| 白沙| 辽阳市| 广宁县| 称多县| 博白县| 巴林左旗| 侯马市| 榆社县| 沁水县| 文水县| 虹口区| 克拉玛依市| 顺平县| 邛崃市| 永安市| 繁昌县| 库尔勒市| 海原县| 出国| 周口市| 巴彦县| 宜都市| 开封市| 荔波县| 通河县| 河南省| 滨州市| 渝中区| 垣曲县| 周宁县| 南城县| 祁连县| 瑞昌市| 汾西县| 乌兰县| 大新县| 克山县|