詳解C語言實現strcat

2021-10-09 05:06:55 字數 1478 閱讀 5718

strcat()庫函式的原型如下:

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

主要作用是把src指向的字串追加到dest指向的字串上。

明白了這個作用之後我們就可以自己開始編寫實現這個函式。 至於為什麼要自己編寫這個函式,面試的時候面試官就是想要這麼做,你想要這份offer的話那你就寫,不想要的話,next!!

一般的做法可能會是,先把dest遍歷到最後乙個字元'\0',dest就會偏移到'\0'這個位置,之後把src賦值給dest,然後src和dest都自加,偏移到下乙個位址,直到src結束,最後再給dest加上'\0'就完成了。

一下是實現的具體過程

#include //src加到dst後面

char *mystrcat(char *dst,char const *src)

char *tmp=dst; //這個是為了記住起始位址,後面dst會偏移,輸出要靠tmp

while(*dst != '\0') //這個迴圈結束之後,dst指向'\0'

while(*src != '\0')

//這個迴圈結束之後dst偏移指向任意一塊起始位址

*dst = '\0'; //這句一定要加,否則最後乙個字元會亂碼

return tmp; //這裡返回tmp,不能返回dst,dst已經偏移指向'\0'了 }

這裡有幾個注意的點:

1、如果我最後不加*dst = '\0';這句會怎麼樣呢?我的結果如下,會列印乙個'@'字元。這個就是因為在第二個迴圈結束之後,dst指向了乙個沒有被初始化的起始位址,這個位址的內容是隨機的,在我的編譯器裡這個省缺的值剛好是@

2、如果返回的是dst呢?列印的字串是空的。

上面的結果顯示確實空。但是可能有人會說,那時因為你最後執行了*dst = '\0';這句,那我把這句去掉就有如下的列印

這個結果的原因跟上面第乙個要注意的點是一樣的,dst這是指向了乙個沒有被初始化的記憶體位址

以上就是strcat的c語言實現方式的全部內容和個人覺得需要注意的key。

c語言 實現Strcat函式

實現char my strcat char dest,char src 函式.返回 dest字串的位址。功能 將src指向的字串追加到dest指向字串的後面。例如 char dest 10 andef char src ghi my strcat 之後,dest指向的字串為 andefghi inc...

C語言隨筆(strcat的實現)

今天看c語言教程的時候,看到有關指標,字串陣列的時候,發現乙個有意思的函式 strcat char strcat char strdestination,const char strsource 此函式的功能是,把strsource的字串 放在strdestination後面,並且覆蓋strdest...

C語言 模擬實現strcat

strcat 函式是char 型別,其主要作用是將第二個字串拷貝到第乙個字串後,形成乙個新的字串。但需要注意的是strcat 函式並不能檢查出第乙個陣列是否能容納下第二個字串,可能會出現多出來的字元溢位問題。所以在使用的過程一定要考慮到為第乙個陣列分配足夠大的空間,或者可以使用需要另乙個引數來指定最...