我們先看下面這樣一段**:
1 #include 2 #include 3咋一看,這段**的原意是將p2鏈結到p1的後面,p1為123abc。using
namespace
std;45
intmain()
6
然後將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...