C言語では文字列常用関数stracatと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++)!='\0');
   return strDestination;
 }

 /*
 GNU-C ( ):
 */
 char* strcpy(char *d, const char *s)
 {
   char *r=d;
   while((*d++=*s++));
   return r;
 }
 /* while((*d++=*s++)); : ,
       , NULL , */
stracatプロトタイプextern char*stracat(char*dest、char*src);使用法芰includeはC++の中にあります。機能は、srcが指す文字列をdestの末尾に追加して、\0'を追加します。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!='\0')
  {
    // while(*strDest++), , strDest ++,
    // strDest '\0' 。/ ++; *strDest
    // '\0'。
    strDest++;
  }

  while(*strDest++ = *strSrc++)
  {
    NULL;             // ++,
  }                   // *strDest='\0';
  return address;     // ,
}