程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> C語言中字符串常用函數strcat與strcpy的用法介紹

C語言中字符串常用函數strcat與strcpy的用法介紹

編輯:更多關於編程
    以下是對C語言中字符串常用函數strcat與strcpy的使用方法進行了詳細的分析介紹,需要的朋友可以參考下  

    strcpy原型聲明:extern char *strcpy(char* dest, const char *src);
    頭文件:#
    include <string.h>
    功能:把從src地址開始且含有NULL結束符的字符串復制到以dest開始的地址空間
    說明:src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串。
    返回指向dest的指針。
    函數實現:

    復制代碼 代碼如下:
    /**********************
    * C語言標准庫函數strcpy的一種典型的工業級的最簡實現
    * 返回值:目標串的地址。
    * 對於出現異常的情況ANSI-C99標准並未定義,故由實現者決定返回值,通常為NULL。
    * 參數:
    * strDestination 目標串
    * strSource 源串
    ***********************/

    char *strcpy(char *strDestination,const char *strSource)
    {
      assert(strDestination!=NULL && strSource!=NULL);
      char *strD=strDestination;
      while ((*strD++=*strSource++)!='');
      return strDestination;
    }

    /*
    GNU-C中的實現(節選):
    */
    char* strcpy(char *d, const char *s)
    {
      char *r=d;
      while((*d++=*s++));
      return r;
    }
    /* while((*d++=*s++)); 的解釋:兩層括號是為了取賦值表達式的值,
           而賦值表達式的值為左操作數,所以在復制NULL後,循環停止 */


    strcat原型
    extern char *strcat(char *dest,char *src);
    用法
    #include <string.h>
    在C++中,則存在於<cstring>頭文件中。
    功能
    把src所指字符串添加到dest結尾處(覆蓋dest結尾處的'')並添加''。
    說明
    src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串。
    返回指向dest的指針。
    函數實現:

    復制代碼 代碼如下:


    //將源字符串加const,表明其為輸入參數
    char *strcat(char *strDest, const char *strSrc)
    {
      // 後文return address,故不能放在assert斷言之後聲明address
      char *address = strDest;
      assert((strDest != NULL) && (strSrc != NULL)); //對源地址和目的地址加非0斷言
      while(*strDest)             //是while(*strDest!='')的簡化形式
      {
        //若使用while(*strDest++),則會出錯,因為循環結束後strDest還會執行一次++,
        //那麼strDest將指向''的下一個位置。/所以要在循環體內++;因為要是*strDest最後指
        //向該字符串的結束標志''。
        strDest++;
      }

      while(*strDest++ = *strSrc++)
      {
        NULL;             //該循環條件內可以用++,
      }                   //此處可以加語句*strDest='';無必要
      return address;     //為了實現鏈式操作,將目的地址返回
    }

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved