c請問strcpy 和 strcpy s的區別 是什麼

時間 2022-04-30 21:13:08

1樓:

strcpy_s和strcpy函式的功能幾乎是一樣的。

strcpy函式,就象gets函式一樣,它沒有方法來保證有效的緩衝區尺寸,所以它只能假定緩衝足夠大來容納要拷貝的字串。

在程式執行時,這將導致不可預料的行為。用strcpy_s就可以避免這些不可預料的行為。

這個函式用兩個引數、三個引數都可以,只要可以保證緩衝區大小。

三個引數時:

errno_t strcpy_s(

char *strdestination,size_t numberofelements,const char *strsource兩個引數時:

errno_t strcpy_s(

2樓:小北娃

strcpy_s是vs後續版本中微軟新推出的更安全的函式。

strcpy之所以不安全是因為它需要程式設計師保證輸出buffer不會越界。

3樓:匿名使用者

strcpy 如果使用不當會造成記憶體越界,比如向目標緩衝區中拷貝超過緩衝區長度的串。

用strcpy_s 代替strcpy可以防止出現這種錯誤,它強制程式設計師寫出安全的**。

c++中strcpy什麼意思及用法

4樓:匿名使用者

字串拷貝

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

把第二個引數的字串複製到第乙個引數的字串

5樓:匿名使用者

string s1="ddsds",s2="sdsdsdsd";

strcay(s1,s2) 意思為將s2複製給s1,並返回s1。

可以去看一下

vc為什麼識別不出來 strcpy_s函式

6樓:匿名使用者

在vs2010中,有眾多的系統函式名都追加了_s,比如scanf_s(),strcmp_s()等等,但在vc6.0中使用的還是傳統的函式名,如果你希望早期的編譯程式能識別新的函式原型,就像要求清朝的科學家能夠上網衝浪一樣不和情理。

7樓:

樓上說的對。 _s表示這個方法是安全的 (safe),原來的函式對字串的長是忽略的,可能溢位,這些加_s的方法對長度進行判斷,如果目標字元裝不下的話是不會進行不複製的。

8樓:匿名使用者

因為你沒有包含標頭檔案#include

用c++編寫strcpy

9樓:

從安全角度看,這個還是不安全的,考慮到串的長度;建議用s_strcpy

char *strcpy1(char *target, const char *source)

#include

int main()

10樓:匿名使用者

/** an implementation of strcpy.

*/char *strcpy1(char *target, const char *source)

#include

int main()

11樓:

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

vs2013 c++中的strcpy用不了,說換成strcpy_s,還是出現錯誤了。

12樓:

不能x="王「這樣賦值,只能這樣初始化。也不能對char *x="abc"這樣定義的指標x進行寫操作,因為這樣定義的字串是常數。

13樓:七月流光

函式用錯了。無論是strcpy還是strcpy_s,都是將後面乙個字串的內容複製到前面乙個字串中。你寫的**中,x是乙個指標,指向乙個字串常量"王",x這裡指向的是乙個常量區域,如果你呼叫strcpy或者strcpy_s,將m拷貝到乙個常量區域,這就錯了。

因為字面值常量的記憶體是不能修改的,這就是為何是常量的原因。要解決你的問題,你可以先給x分配乙個空間x = new char[3];然後對x進行操作。記得在類的析構中釋放分配的空間。

14樓:感情程式設計師

strcpy_s(x,m);

15樓:匿名使用者

貌似是你的形參不對吧。。。

c++ 使用strcpy_s函式將字串複製到字元陣列

16樓:四捨**入

#include

#include

int main()

char name1[20] = "吃了沒?世界";

std::string name2 =  "吃了" ;

strcpy_s(name1, name2.size()+1, name2.c_str());//這個改成name2.c_str(),name2是string型別,不是char*

std::cout << name1 << std::endl;

std::cin.get();

return 0;

17樓:匿名使用者

strcpy_s有兩個過載版本

strcpy_s(dest,src);

dest size必須是編譯期常量 且必須是sizeof(dest);

第二個版本是目的長度執行期才知道

strcpy_s(dest, sizeof(dest),src);

之所以加字尾 _s 是因為防止拷貝時緩衝區溢位,所以程式設計師務必告訴 c runtime 目的位址確切的長度。

18樓:篤俠

要不要把

strcpy_s(name1,name2.size()+1,name2);

寫成strcpy_s(name1,name2.size()+1,name2.c_str());啊。

c語言strcpy問題,C語言中,strcpy為什麼會出現錯誤

先問你乙個問題,你確定 這樣的語句可以編譯通過?至少 我使用的編譯器是不能通過這樣的語句的。因為 strcpy 你在修改 1234 這個常量區。這是非法的。haha 已經給出乙個解釋了,我只想再補充一下,sizeof a 為什麼從頭到尾就沒變過。因為sizeof這個看起來像是個函式其實他不是乙個普通...

請問C 中「流」和「指標(位址)」有什麼關係

所謂的 流 實際上是乙個類,更確切地說是乙個模板。cout abc endl 它真實的操作是利用了幾個函式 函式的近似原型 ostream operator ostream operator ostream endl ostream o 所以這個cout語句的執行流程是這個樣子的 operator ...

請問什麼蔬菜和水果含維生素c最高

什麼蔬菜含維生素c最多?提到維生素c,人們總是聯想到辣椒 甘藍 士多啤梨 橘子 桂圓等。其實,食用薯類食品也是補充 維生素c的好方法。在各種薯類食品中,尤以紅薯特具營養價值。就維生素c含量而言,紅薯每百克含維生素c30毫克,遠超過蘋果 葡萄 桃 梨等水果。薯類食品的好處在於,不論煮 炸 烤等料理方法...

您好,請問聯想樂phone和諾基亞C7選擇哪款好?謝謝

當然樂 phone了,這個定位的是和iphone 比的,相容的軟體也多,作業系統是買的,比諾基亞的自主開發系統要好,諾基亞的系統被其他廠家給砸了,現在收回自己搞了 都別選了,都不咋滴,推薦你買個htc g7或者摩托羅拉mb525就是那款三防手機,樂phone系統版本太低,c7就不說了。樂phone ...

請問澄海3c光明和黑暗都有哪些主力英雄,最好用中文介紹一下,,謝謝啦

光明的娜迦女妖,聖騎士,大魔法師,山丘之王,血魔法師,惡魔獵手,守望者,月之女祭司,森林守護者,鍊金術士,光明遊俠。黑暗的深淵魔王,劍聖,炎魔,恐懼魔王,牛頭人酋長,地穴領主,黑暗遊俠,死亡騎士,暗影獵手,巫妖。合體熊貓兩隻,劍聖和惡魔獵手合體的,光明遊俠和黑暗遊俠合體的。光明的綜合排名 首發 鍊金...