C語言字符串函數strcat | strcpy | strlen | strcmp的用法及原型

2021-12-30 C語言中文社區

strcat(str1,str2) 意為將字符串str2連接到字符串str1之後

strcat用法如下

#include <stdio.h>
#include <string.h>

int main ()
{
   char src[99], dest[99];

   strcpy(src,  "This is source");
   strcpy(dest, "This is destination");

   strcat(dest, src);

   printf("最終的目標字符串: %s", dest);

   return 0;
}

輸出結果:This is sourseThis is destination

strcat函數的原型如下

char *strcat(char *strDest, const char *strScr) //將源字符串加const,表明其為輸入參數
{
       char * p = strDest;             //將目的字符串數組賦給p 
       if(strDest==NULL||strScr==NULL)//對原地址和目的地址加非0斷言 
       return strDest; 
       while(*p)             //是while(*p!=』\0』)的簡化形式
       {                       
              p++;               
       }                        
       while(*strsource!=0) 
       {
              *p=*strScr;
     p++;             //依次++以進行連接 
     strScr++;     
       }
    *p='\0';                          //有無必要?
       return strDest;               //為了實現鏈式操作,將目的地址返回
}

dev c++調試代碼如下

#include<stdio.h>
#include<string.h>
char *strcat(char *strDest, const char *strScr) //將源字符串加const,表明其為輸入參數
{
       char * p = strDest;             //將目的字符串數組賦給p 
       if(strDest==NULL||strScr==NULL)//對原地址和目的地址加非0斷言 
       return strDest; 
       while(*p)             //是while(*p!=』\0』)的簡化形式
       {                       
              p++;               
       }                        
       while(*strScr!=0) 
       {
              *p=*strScr;
     p++;             //依次++以進行連接 
     strScr++;     
       }
    *p='\0';                          //有無必要?
       return strDest;               //為了實現鏈式操作,將目的地址返回
}
int main(){
 char str1[99]="The";
 char str2[99]="One";
 printf("%s\n",strcat(str1,str2));
 return 0;
}

輸出結果為TheOne 如果懷疑strcat函數本身發揮作用的話可以將調用的函數名稱改成strcate之類的 結果也一樣哦 來 試試看~

strcpy的用法及原型strcpy(str1,str2)是將字符串str2複製到str1中去。

其原型char *strcpy(char *dest, const char *src) 把 src 所指向的字符串複製到 dest。

需要注意的是如果目標數組 dest 不夠大,而源字符串的長度又太長,可能會造成緩衝溢出的情況。

關注公眾號:C語言中文社區,免費領取300G編程資料

strcpy的用法如下

#include <stdio.h>
#include <string.h>

int main ()
{
  char str1[]="Sample";
  char str2[99];
  char str3[99];
  strcpy (str2,str1);
  strcpy (str3,"copy successfully");
  printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
  return 0;
}

輸出結果為 str1:Sample

str2:   Sample
str3: copy successfully

strcpy的原型在這裡

char *strcpy(char *strDest, const char *strScr)
{
       char *p=strDest;
       if(strDest==NULL||strScr==NULL)//對原地址和目的地址加非0斷言 
       return strDest; 
       while(*strScr)                   //是while(*strScr != 』\0』)的簡化形式;
       {
              *strDest++ = *strScr++;
       }
       *strDest = '\0';       //當strScr字符串長度小於原strDest字符串長度,時,如果沒有改語句, 
                               //  就會出錯了
       return strDest;              
}

dev c++調試過程 strcpy用strcpye代替

#include <stdio.h>
#include <string.h>
char *strcpye(char *strDest, const char *strScr)
{
       char *p=strDest;
       if(strDest==NULL||strScr==NULL)//對原地址和目的地址加非0斷言 
       return strDest; 
       while(*strScr)                   //是while(*strScr != 』\0』)的簡化形式;
       {
              *strDest++ = *strScr++;
       }
       *strDest = '\0';       //當strScr字符串長度小於原strDest字符串長度,時,如果沒有改語句, 
                               //  就會出錯了
       return strDest;              
}

int main ()
{
  char str1[]="Sample";
  char str2[99];
  strcpye(str2,str1);

  printf ("str1: %s\nstr2: %s\n",str1,str2);
  return 0;
}

strcmp用法及原型strcmp用於比較字符串。int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串進行比較。

其中str1和str2可以是字符串常量或者字符串變量,返回值為整形。返回結果如下規定:

strcmp函數實際上是對字符的ASCII碼進行比較:首先比較兩個字符串的第一個字符,若不相等,則停止比較並得出兩個ASCII碼大小比較的結果;如果相等就接著向後第二個字符,以此類推。無論兩個字符串是什麼樣,strcmp函數最多比較到其中一個字符串遇到結束符'/0'為止,就能得出結果。

特別注意:strcmp(const char *str1,const char * str2) 這裡面只能比較字符串,即可用於比較兩個字符串常量,或比較數組和字符串常量,不能比較數字等其他形式的參數。

規定返回值為正數,負數,0 。而確切數值是依賴不同的C實現的。

當兩個字符串不相等時,C 標準沒有規定返回值會是 1 或 -1,只規定了正數和負數。

有些會把兩個字符的 ASCII 碼之差作為比較結果由函數值返回。

strcmp用法如下:

#include <stdio.h>
#include <string.h>

int main ()
{
   char str1[99];
   char str2[99];
   int ret;
   strcpy(str1, "abcdefF");
   strcpy(str2, "ABCDEFF");

   ret = strcmp(str1, str2);

   if(ret < 0)
   {
      printf("str1 小於 str2");
   }
   else if(ret > 0) 
   {
      printf("str1 大於 str2");
   }
   else 
   {
      printf("str1 等於 str2");
   }

   return 0;
}

運行結果:str1大於str2

strcmp原型如下

int strcmp (const char *str1,const char *str2)
{           
       int len = 0;
       while(*str1 && *str2 && (*str1 == *str2))
       {
              str1++;
              str2++;
       }
       return *str1-*str2;
}

dev c++調試代碼如下 strcmp用strcmpa代替

#include <stdio.h>
int strcmpa (const char *str1,const char *str2)
{           
       int len = 0;
    

       while(*str1 && *str2 && (*str1==*str2))
       {
              str1++;
              str2++;
       }
       return *str1-*str2;

}

int main(void)
{
       char str1[99] = {"AA"};
       char str2[99] = {"aa"};
       printf("%d\n",strcmpa(str1,str2));
}

strlen用法及原型strlen用於記錄字符串長度。

strlen(const char *str) 計算字符串 str 的長度,直到空結束字符,但不包括空結束字符。

strlen用法實例在這裡:

#include <stdio.h>
#include <string.h>

int main ()
{
   char str[99];
   int len;

   strcpy(str, "You are my destiny");

   len = strlen(str);
   printf("%s的長度是 %d\n", str, len);

   return 0;
}
strlen原型如下

int strlen(char *str)
{
    int len = 0;
       while(*str++)
       {
              len++;
       }
       return len;
}
dev c++調試過程如下 函數名用strlenn代替


#include <stdio.h>
int strlenn(char *str)
{
    int len = 0;
       while(*str++)
       {
              len++;
       }
       return len;
}
int main(void)
{
       char str[99] = {"You are my destiny"};
       printf("%d\n",strlenn(str));
}

原文連結:https://blog.csdn.net/Li5566123/article/details/122202701

相關焦點

  • 字符串函數strlen()、strcpy()、strcat()、strcmp()解析
    字符串函數所在頭文件:#include "string.h"字符串長度函數strlen()
  • C語言strcmp和strcpy的用法
    一、c語言strcmp()用法原型:int strcmp(const char *s1, const char *s2);頭文件:#include
  • C語言模擬實現字符串操作函數
    帶長度參數的函數 1. strlenstrlen是用來求字符串長度的函數,字符串長度就是字符串中包含的字符的個數,但是不包含字符串結尾的 『\0』實現strlen有三種方法:(1)定義一個計數器size_t mystrlen(const char* str){
  • C語言|字符串的複製、連接和比較及字符串長度
    字符串複製函數strcpy()strcpy(s1,s2);該函數把字符串s2複製到s1,直到遇到s2中的』\0』為止。s1要有足夠的空間容納s2,且s1中的內容被覆蓋,函數返回的是s1如果函數執行前s1有初值,那麼值被覆蓋由於函數返回值是s1,也可以直接輸出此函數2.
  • 快速上手系列-C語言之字符串處理函數(一)
    C語言中常用的字符串操作函數,有比如計算字符串長度、字符串拷貝,字符串比較等這樣的整體操作函數,有字符串查詢函數,也有字符串轉換函數等等,這裡先介紹字符串整體操作函數。字符串整體操作函數實際編程中,經常遇到對字符串整體的控制等操作,比如長度測量函數strlen(),字符串拷貝函數strcpy()/strncpy(),字符串比較函數 strcmp()/strncmp(),字符串連接函數strcat()/strncat()等,這些函數是非常有用的。
  • C語言複習計劃(五)|「字符串」篇
    一、string.h中的字符串處理函數1.求字符串長度函數strlen()調用格式:strlen(str)功能:測試字符串長度。函數返回值就是str 中字符的個數。2.字符串複製函數strcpy()和strncpy()調用格式:strcpy(字符數組1,字符串2)功能:複製第二個參數的內容到第一個參數中。第一個參數必須有足夠的內存來接受第二個參數,第二個參數可以是含有結束符'\0'的字符串(字符數組或字符串常量)。
  • C語言中的字符串操作函數
    我們再回到本節的字符串問題上,在講述字符串拷貝函數前,我們再來回憶一下c語言中的字符串。* str4 = "abc";printf("%d\n", strlen(str1));  printf("%d\n", strlen(str2));  printf("%d\n", strlen(str3));  printf("%d\n", strlen(str4));  上面就是c語言中的字符串長度函數,在使用過程中千萬要注意。
  • C語言中常用的6個字符串處理函數
    01.C語言基礎-數據類型02.C語言中算法的基本特性和表達方式03.C語言中的輸入輸出函數04.C語言基礎-循環控制語句05.C語言基礎-條件控制語句06.C語言基礎-控制語句示例07.C語言數組- 一維數組08.C語言數組- 二維數組09.C語言數組-字符數組
  • C語言程序設計學習筆記(第十一天)
    、以零(整數0)結尾的一串字符,0和『/0是一樣的』,但是和『0』不同;0標誌字符串的結束,但他不是字符串的一部分,計算字符串長度的時候不包括這個0;字符串以數組的形式存在,以數組或指針的方式訪問,但更多的是以指針的形式;string.h裡邊有很多處理字符串的函數;不能用運算符對字符串做運算;
  • 【自學C語言】書筆記I 20b 字符串比較函數
    二、字符串連接函數    1.函數strcat        具體格式:    其中:        "字符數組名",是已定義的字符數組;        「字符串」,表示字符串常量和已存放字符串的字符數組名;    功能是:
  • 在C語言常見的處理字符串函數分別有哪些?
    常見的處理字符串函數有如下:1、strcpy函數:先定義兩個字符數組,分別代表s1和s2,則:strcpy(s1,s2);
  • 【C語言更新】C語言中字符串的操作
    void  *memcpy(void *dest, const void *src, size_t n)void  *memmove(void *dest, const void *src, size_t n)另一個用於從 src 複製  n 個字符到 dest 的函數。
  • C語言 -- 字符串詳解
    同時,C 語言提供了一系列庫函數來對操作字符串,這些庫函數都包含在頭文件 string.h 中。一、字符串常量和字符數組1.1、什麼是字符串常量C 語言雖然沒有字符串類型,但是 C語言提是存在字符串這個概念的,也就是字符串常量:以 NUL 字節結尾的 0 個或多個字符組成的序列。
  • 字符串處理函數
    ;//定義字符型數組並初始化    strcat(c1,c2); //將c2儲存的字符串連接到c1儲存的字符串之後printf("string c1: ");        puts(c1);//輸出字符串c1printf("string c2: ");        puts(c2);//輸出字符串c2}
  • C語言字符串詳解
    同時,C 語言提供了一系列庫函數來對操作字符串,這些庫函數都包含在頭文件 string.h 中。一、字符串常量和字符數組1.1、什麼是字符串常量C 語言雖然沒有字符串類型,但是 C語言提是存在字符串這個概念的,也就是字符串常量:以 NUL 字節結尾的 0 個或多個字符組成的序列。
  • 在C語言中如何高效地複製和連接字符串?
    作者 | Martin Sebor譯者 | 蘇本如,責編 | 劉靜以下為譯文:在所有標準C語言<string.h>頭文件中聲明的字符串處理函數中,最常用的是那些用來複製和連接字符串的函數。函數的第一個子集是由Unix第七版在1979年引入的,它由strcat、strncat、strcpy和strncpy函數組成。儘管這四個函數都在Unix的各種版本中使用,但通常情況下,對這些函數的調用卻沒有使用它們的返回值。儘管這些函數可以同樣很容易地定義為返回一個指針來指向最後一個複製的字符(或它的後一位),而且事實證明這種做法也非常有用。
  • C語言字符串操作總結
    strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定長度字符串 strlen(p) 取字符串長度 strcmp(p, p1) 比較字符串 strcasecmp忽略大小寫比較字符串strncmp(p, p1, n) 比較指定長度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p,
  • C語言字符數組和字符串
    字符串數據類型是建模在形式字符串的想法上的數據類型。字符串是幾乎在所有程式語言中可以實現的非常重要和有用的數據類型。在某些語言中它們可作為基本類型獲得,在另一些語言中做為複合類型獲得。多數高級語言的語法允許通常用某種方式引用起來的字符串來表示字符串數據類型的實例;這種元字符串叫做「文本」或「字符串文本」。
  • 單片機c語言字符串操作
    函數原型int atoi(const char *nptr);int val = atoi("12");這樣va就l等於12int轉字符串 itoa函數原型:char*itoa(intvalue,char*string,intradix);int number
  • C語言基礎知識學習(二)
    函數是C語言的基本單位;3. C語言程序開始於主函數,結束於主函數;4. C語言中沒有輸入輸出語句但有輸入輸出函數.//將後面的字符串複製到前面strcpy (string_1,」ABCD」)注意:後面的字符串不能大於前面的,如果小於的話如上例子複製後string為AB』\0』lo』\0』那麼用printf輸出為ABb)strcat函數功能:將後面的字符串連接到前面,前面的結束標誌被覆蓋