轉:strcat與strcpy與strcmp與strlen

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   io   ar   for   strong   

轉自:http://blog.chinaunix.net/uid-24194439-id-90782.html

strcat  原型:extern char *strcat(char *dest,char *src);
   用法:#include <string.h>
   功能:把src所指字串添加到dest結尾處(覆蓋dest結尾處的‘\0‘)並添加‘\0‘。
   說明:src和dest所指記憶體地區不可以重疊且dest必須有足夠的空間來容納src的字串。
   返回指向dest的指標。
   舉例:
   // strcat.c
   #include <syslib.h>
   #include <string.h>
   main()
   {
   char d[20]="Golden Global";
   char *s=" View";
   clrscr();
   strcat(d,s);
   printf("%s",d);
   getchar();
   return 0;
   }
   程式執行結果為:
 

  Golden Global View

strcpystrcpy 原型聲明:extern char *strcpy(char *dest,char *src);   標頭檔:string.h
   功能:把src所指由NULL結束的字串複製到dest所指的數組中。
   說明:src和dest所指記憶體地區不可以重疊且dest必須有足夠的空間來容納src的字串。
   返回指向dest的指標。  典型實現  /**********************
   * C語言標準庫函數strcpy的一種典型的工業級的最簡實現
   * 傳回值:
   * 返回目標串的地址。
   * 對於出現異常的情況ANSI-C99標準並未定義,故由實現者決定傳回值,通常為NULL。
   * 參數:
   * strDeatination
   *          目標串
   * strSource
   * 源串
   ***********************/
   char *strcpy(char *strDestination, const char *strSource);
   {
   assert(strDestination && strSource);
   while(*strDestination++ = *strSource++); 
   return strDestination;
   }
strcmp  原型:extern int strcmp(char *s1,char * s2);
   用法:#include <string.h>
   功能:比較字串s1和s2。
   說明:
   當s1<s2時,傳回值<0
   當s1=s2時,傳回值=0
   當s1>s2時,傳回值>0
   即:兩個字串自左向右逐個字元相比(按ASCII值大小相比較),直到出現不同的字元或遇‘\0‘為止。如:
   "A"<"B" "a">"A" "computer">"compare"
   舉例:
   // strcmp.c
   #include <syslib.h>
   #include <string.h>
   int main()
   {
   char *s1="Hello, Programmers!";
   char *s2="Hello, programmers!";
   int r;
   clrscr();
   r=strcmp(s1,s2);
   if(!r)
   printf("s1 and s2 are identical");
   else
   if(r<0)
   printf("s1 less than s2");
   else
   printf("s1 greater than s2");
   getchar();
   return 0;
 

  }

strlen  原型:extern unsigned int strlen(char *s);
   用法:#include <string.h>
   功能:計算字串s的(unsigned int型)長度
   說明:返回s的長度,不包括結束符NULL。
   舉例:
   // strlen.c
   #include <syslib.h>
   #include <string.h>
   main()
   {
   char *s="Golden Global View";
   clrscr();
   printf("%s has %d chars",s,strlen(s));
   getchar();
   return 0;
   }
   下面給大家提供幾種實現strlen函數的原始碼,供大家參考:
   -------------------------------------------------1:start------------------------------------
   #include <stdio.h>
   #include <assert.h>
   typedef unsigned int u_int;
   u_int Mystrlen(const char *str)
   {
   u_int i;
   assert(str != NULL);
   for (i = 0; str != ‘\0‘; i++);
   return i;
   }
   ------------------------------------------------1:end--------------------------------------
   -------------------------------------------------2:start--------------------------------------
   int strlen(const char *str) 
   { 
   assert(str != NULL); 
   int len = 0; 
   while((*str++) != ‘\0‘) 
   len++; 
   return len; 
   }http://baike.baidu.com/edit/id=736226
   ------------------------------------------------2:end ------------------------------------------
   ------------------------------------------------3:start------------------------------------------
   int strlen(const char *str) 
   { 
   assert(str); 
   const char *p = str; 
   while(*p++!=NULL); 
   return p - str - 1; 
   }
   -------------------------------------------------4:end-----------------------------------------
   -------------------------------------------------5:start----------------------------------------
   int strlen(const char *str) 
   { 
   assert(str); 
   const char *p = str; 
   while(*p++); 
   return p - str - 1; 
   }
   -----------------------------------------------6:end----------------------------------------
   簡單的總結一下:
   以上各種實現的方式都是大同小異的,有的用的是變數,有的用的是指標。
   其中,最後一個用的是遞迴的方式。其實,在實現庫函數的時候,是規定不可以
   調用其他的庫函數的,這裡只是給大家一個方法,不用變數就可以實現strlen。

轉:strcat與strcpy與strcmp與strlen

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.