strcat函式的坑點

2021-07-11 01:40:03 字數 630 閱讀 7262

我們先看下面這樣一段**:

1 #include 2 #include 3

using

namespace

std;45

intmain()

6

咋一看,這段**的原意是將p2鏈結到p1的後面,p1為123abc。

然後將str字元陣列向後移動兩個位置,將p1拷貝到從該位置開始之後的記憶體中。

結果為xy123abc

然而我們執行一下這段**發現程式崩潰了,我們呼叫堆疊發現函式定位在這一行

咦,這是怎麼回事

趕緊再查查strcat函式的用法,發現當鏈結p1和p2字串的時候,將鏈結的字串一起

存入p1中,那麼就隱含了這麼個意思,就是說p1的大小必須要容得下鏈結後的字串。

但是本質上是字串"123"是儲存在程式中的常量區,而常量區只能進行讀操作不能進行寫操作

那麼我們在棧區定義乙個較大的陣列來儲存連線後的結果。

char p1[20]="

123";

現在我們再執行下看看結果:

這下果然正確了

strcat 函式的實現

name xif coder xifan2010 yahoo.cn time 08.22.2012 function char my strcat char pstr 1,char pstr 2 char my strcat char pstr 1,char pstr 2 使指標pstr 1指向字串...

strcat 函式的用法

這幾天的一次程式練習中用到了strcat 函式,但也想到了一些問題。我們都知道strcat str,ptr 是將字串ptr內容連線到字串str後,然後得到乙個組合後的字串str,比如 str字串內容為 123456 0 ptr字串為 abc 0 那麼strcat str,ptr 後str內容為 12...

實現strcat函式

strcat函式是將兩個字串進行連線。define crt secure no warnings include include include includechar strcat char dest,const char src dest i 0 return dest int main str...