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

詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用

 更新時間:2015年08月24日 10:55:54   投稿:goldensun  
這篇文章主要介紹了詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下

C語言strcpy()函數(shù):復(fù)制字符串

頭文件:#include <string.h>

定義函數(shù):

char *strcpy(char *dest, const char *src);

函數(shù)說明:strcpy()會將參數(shù)src 字符串拷貝至參數(shù)dest 所指的地址。

返回值:返回參數(shù)dest 的字符串起始地址。

附加說明:如果參數(shù) dest 所指的內(nèi)存空間不夠大,可能會造成緩沖溢出(buffer Overflow)的錯誤情況,在編寫程序時請?zhí)貏e留意,或者用strncpy()來取代。

范例

#include <string.h>
main(){
 char a[30] = "string(1)";
 char b[] = "string(2)";
 printf("before strcpy() :%s\n", a);
 printf("after strcpy() :%s\n", strcpy(a, b));
}

執(zhí)行結(jié)果:

before strcpy() :string(1)
after strcpy() :string(2)

C語言strncpy()函數(shù):復(fù)制字符串的前n個字符

頭文件:#include <string.h>

strncpy()用來復(fù)制字符串的前n個字符,其原型為:
 

 char * strncpy(char *dest, const char *src, size_t n);

【參數(shù)說明】dest 為目標(biāo)字符串指針,src 為源字符串指針。

strncpy()會將字符串src前n個字符拷貝到字符串dest。

不像strcpy(),strncpy()不會向dest追加結(jié)束標(biāo)記'\0',這就引發(fā)了很多不合常理的問題,將在下面的示例中說明。

注意:src 和 dest 所指的內(nèi)存區(qū)域不能重疊,且 dest 必須有足夠的空間放置n個字符。

【返回值】返回字符串dest。

【函數(shù)示例】拷貝4組字符串。

#include<stdio.h>
#include<string.h>
int main(void){
 char dest1[20];
 char src1[] = "abc";
 int n1 = 3;
 char dest2[20]="********************";
 char src2[] = "abcxyz";
 int n2 = strlen(src2)+1;
 char dest3[100] = "http://see.xidian.edu.cn/cpp/shell/";
 char src3[6] = "abcxyz"; // 沒有'\0'
 int n3 = 20;
 char dest4[100] = "http://see.xidian.edu.cn/cpp/u/yuanma/";
 char src4[] = "abc\0defghigk";
 int n4 = strlen(src3);
 strncpy(dest1, src1, n1); // n1小于strlen(str1)+1,不會追加'\0'
 strncpy(dest2, src2, n2); // n2等于strlen(str2)+1,恰好可以把src2末尾的'\0'拷貝到dest2
 strncpy(dest3, src3, n3); // n3大于strlen(str3)+1,循環(huán)拷貝str3
 strncpy(dest4, src4, n4); // src4中間出現(xiàn)'\0'
 printf("dest1=%s\n", dest1);
 printf("dest2=%s, dest2[15]=%c\n", dest2, dest2[10]);
 printf("dest3=%s\n", dest3);
 printf("dest4=%s, dest4[6]=%d, dest4[20]=%d, dest4[90]=%d\n", dest4, dest4[6], dest4[20], dest4[90]);
 return 0;
}

VC6.0運行結(jié)果:

MinGW運行結(jié)果:

從上面的運行結(jié)果可以看出,strncpy()很難掌控,行為詭異。使用strncpy()最安全方式是使n等于strlen(src)+1,即拷貝整個字符串,同時將'\0'追加到dest。但這又與strcmp()的作用沒有什么兩樣。

相關(guān)文章

  • C語言switch 語句的用法詳解

    C語言switch 語句的用法詳解

    本文主要介紹C 語言中的switch 語句,這里提供示例代碼和詳細介紹,希望能幫助學(xué)習(xí)C語言的小伙伴
    2016-07-07
  • 深入解讀C++ 內(nèi)聯(lián)函數(shù)inline|nullptr

    深入解讀C++ 內(nèi)聯(lián)函數(shù)inline|nullptr

    內(nèi)聯(lián)函數(shù):用** inline 修飾的函數(shù)叫做內(nèi)聯(lián)函數(shù),編譯時C++編譯器會在調(diào)用的地方展開內(nèi)聯(lián)函數(shù)**,這樣調(diào)用內(nèi)聯(lián)函數(shù)就需要創(chuàng)建棧楨,就提高效率了,這篇文章給大家介紹C++ 內(nèi)聯(lián)函數(shù)inline|nullptr的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • C++?路徑中./、../、/代表的含義

    C++?路徑中./、../、/代表的含義

    這篇文章主要介紹了C++?路徑中./、../、/代表的含義,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 一篇文章帶你實現(xiàn)C語言中常用庫函數(shù)的模擬

    一篇文章帶你實現(xiàn)C語言中常用庫函數(shù)的模擬

    這篇文章主要介紹了C語言中常用庫函數(shù)的模擬,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • C++數(shù)位DP復(fù)雜度統(tǒng)計數(shù)字問題示例詳解

    C++數(shù)位DP復(fù)雜度統(tǒng)計數(shù)字問題示例詳解

    這篇文章主要為大家介紹了利用C++數(shù)位DP的復(fù)雜度來統(tǒng)計數(shù)字問題的示例實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升值加薪
    2021-11-11
  • C語言實現(xiàn)數(shù)組的循環(huán)移位的方法示例

    C語言實現(xiàn)數(shù)組的循環(huán)移位的方法示例

    這篇文章主要介紹了C語言實現(xiàn)數(shù)組的循環(huán)移位的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 詳解C++實現(xiàn)線程安全的單例模式

    詳解C++實現(xiàn)線程安全的單例模式

    這篇文章主要介紹了C++實現(xiàn)線程安全的單例模式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • C語言 深入講解條件編譯的用處

    C語言 深入講解條件編譯的用處

    C語言提供了條件編譯的語法,就是在編譯源碼的時候,可以選擇性地編譯指定的代碼。例如我們開發(fā)一個兼容windows系統(tǒng)和linux系統(tǒng)運行的項目,那么,一些與操作系統(tǒng)密切相關(guān)的代碼,就需要進行選擇性編譯
    2022-04-04
  • wince程序防止創(chuàng)建多個實例實現(xiàn)互斥作用

    wince程序防止創(chuàng)建多個實例實現(xiàn)互斥作用

    什么時候用的互斥?當(dāng)你的程序只允許同時打開一個的時候,就可以通過互斥來實現(xiàn),下面說的互斥,主要是針對防止程序創(chuàng)建多個實例這種情況來實現(xiàn)的
    2014-02-02
  • C++ 學(xué)習(xí)之旅三 我和超級瑪麗有個約會

    C++ 學(xué)習(xí)之旅三 我和超級瑪麗有個約會

    學(xué)習(xí)了c++有一周有余了吧,感謝孫鑫老師的視頻教程,讓我   對C++有了基本的了解,并理解到C++與.net 的許許多多的區(qū)別,更要感謝網(wǎng)民為programaking的人,會為我提供了超級瑪麗制作揭秘 這套寶貴的教程,讓我 做做出了這個項目,對c++ 有了一個更深層次的認識
    2012-11-11

最新評論

盖州市| 故城县| 永德县| 陆良县| 增城市| 壶关县| 永城市| 抚顺市| 达孜县| 宣威市| 河池市| 大埔区| 大田县| 伊通| 民权县| 印江| 湖口县| 太谷县| 康平县| 呼玛县| 武穴市| 吉木乃县| 南平市| 宁乡县| 贵溪市| 忻城县| 恩施市| 沛县| 台北市| 五家渠市| 台东县| 宁远县| 开原市| 金川县| 景宁| 连城县| 肃宁县| 祁东县| 白河县| 湘潭县| 海城市|