C語言 - strcat和strncat的編程實現及總結


一、函數strcat與stcncat的函數實現

    1、strcat函數的實現

      要求:

         原型:char * strcat(char *dest, const char *src);
           頭文件:#include <string.h>
           功能:1、dest 為目的字符串指針,src 為源字符串指針。strcat() 會將參數 src 字符串復制到參數 dest 所指的字符串尾部;
            2、dest 最后的結束字符 NULL 會被覆蓋掉,並在連接后的字符串的尾部再增加一個 NULL。
        說明:
                返回值:dest 字符串起始地址。

  strcat代碼功能的實現

char* MyStrcat(char *dst, const char *src)
{
    assert(dst != NULL && src != NULL); //assert函數的頭文件為#include <assert.h>
    char *temp = dst;
    while (*temp != '\0')
        temp++;
    while ((*temp++ = *src++) != '\0');

    return dst;
}

    注意:1、dest 與 src 指針不能為NULL,並且所指的內存空間不能重疊,且 dest 要有足夠的空間來容納要復制的字符串。

       2、assert是用來避免顯而易見的錯誤的,而不是處理異常的。錯誤和異常是不一樣的,錯誤是不應該出現的,異常是不可避免的。

  

 2、strncat函數的實現

      要求:

         原型:char *strncat(char *dest, const char *src, size_t n);
           頭文件:#include <string.h>
           功能:把src所指字符串的前n個字符添加到dest結尾處,覆蓋dest結尾處的'/0',實現字符串連接。
        說明:
                返回值:dest 字符串起始地址。
  strncat代碼功能的實現
char *strncat_m(char *dest,const char *str,int n)
{
    assert((dest!=NULL)&&(str!=NULL));
    char *cp=dest;
   //移動指針到末尾
    while(*cp!='\0') ++cp;
 
    while(n&&(*cp++=*str++)!='\0')
    {
        --n;
    }
 
    return dest;
}

  注意事項與strcat一致,不過要注意n的取值范圍


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM