C語言strcmp和strcpy的用法

2021-02-19 研學而思
一、c語言strcmp()用法原型:int strcmp(const char *s1, const char *s2);

頭文件:#include <string.h>

功能:用來比較兩個字符串

參數:s1、s2為兩個進行比較的字符串

返回值:若s1、s2字符串相等,則返回零;若s1大於s2,則返回大於零的數;否則,則返回小於零的數。

說明:strcmp()函數是根據ACSII碼的值來比較兩個字符串的;strcmp()函數首先將s1字符串的第一個字符值減去s2第一個字符,若差值為零則繼續比較下去;若差值不為零,則返回差值。

#include <string.h>

int main(void)

{

char *p="aBc";

char *q="Abc";

char *h="abc";

printf("strcmp(p,q):%d\n",strcmp(p,q));

printf("strcmp(p,h):%d\n",strcmp(p,h));

return 0;

}

//結果:

//strcmp(p,q):32

//strcmp(p,h):-32



原型:extern int strcmp(const char *s1,const char * s2);

所在頭文件:string.h

功能:比較字符串s1和s2。

一般形式:strcmp(字符串1,字符串2)

說明:

當s1<s2時,返回為負數

當s1=s2時,返回值= 0

當s1>s2時,返回正數

即:兩個字符串自左向右逐個字符相比(按ASCII值大小相比較),直到出現不同的字符或遇'\0'為止。如:

"A"<"B" "a">"A" "computer">"compare"

特別注意:strcmp(const char *s1,const char * s2)這裡面只能比較字符串,不能比較數字等其他形式的參數。


二、c語言strcpy()用法

C語言 strcpy() 函數用於對字符串進行複製(拷貝)。

頭文件:string.h

語法/原型:

char* strcpy(char* strDestination, const char* strSource);

參數說明:

strDestination:目的字符串。

strSource:源字符串。


strcpy() 會把 strSource 指向的字符串複製到 strDestination。

必須保證 strDestination 足夠大,能夠容納下 strSource,否則會導致溢出錯誤。

返回值:目的字符串,也即 strDestination。

【實例】使用C語言 strcpy() 函數將字符串 src 複製到 dest。

純文本複製

#include <stdio.h>

#include <string.h>

int main(){

char dest[50] = { 0 };

char src[50] = { "http://c.biancheng.net" };

strcpy(dest, src);

puts(dest);

return 0;

}

運行結果:

strcpy,即string copy(字符串複製)的縮寫。
strcpy是一種C語言的標準庫函數,strcpy把從src地址開始且含有』\0』結束符的字符串複製到以dest開始的地址空間,返回值的類型為char*。

通俗解釋

定義一個字符串char a[20],和一個字符串c[]=「i am a teacher!」;
把c複製到a中就可以這樣用:strcpy(a,c);
這個函數包含在頭文件 <string.h>中.

C語言標準庫的寫法

//
//C語言標準庫函數strcpy的一種典型的工業級的最簡實現。

//返回值:目標串的地址。

//對於出現異常的情況ANSI-C99標準並未定義,故由實現者決定返回值,通常為NULL。

//參數:des為目標字符串,source為原字符串。



char* strcpy(char* des,const char* source)
 
{
 
char* r=des;

assert((des != NULL) && (source != NULL));

 while((*r++ = *source++)!='\0');

 return des;
 
}
 

//while((*des++=*source++));的解釋:賦值表達式返回左操作數,所以在賦值'\0'後,循環停止。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

用法

這是C語言裡面複製字符串的庫函數, 函數聲明包括在專門處理字符串的頭文件<string.h>中:


char * strcpy( char * dst, const char * src );

這個函數把字符串src複製到一分配好的字符串空間dst中,複製的時候包括標誌字符串結尾的空字符一起複製。操作成功,返回dst,否則返回NULL.

示例程序

#include<string.h>
#include <stdio.h>
void main()
{
char a[20], c[] = "I am a teacher!";
strcpy(a, c);
printf(" c=%s\n", c);
printf(" a=%s\n", a);

}

相關焦點

  • C語言字符串函數strcat | strcpy | strlen | strcmp的用法及原型
    的用法及原型strcpy(str1,str2)是將字符串str2複製到str1中去。關注公眾號:C語言中文社區,免費領取300G編程資料strcpy的用法如下#include <stdio.h>#include <string.h>int main ()
  • 字符串函數strlen()、strcpy()、strcat()、strcmp()解析
    x69\141\n"; printf("%ld\t%ld\t%ld\n",strlen(s0),strlen(s1),strlen(s2)); return 0; }運行結果:1 3 3字符串拷貝函數strcpy
  • C語言中的字符串操作函數
    我們再回到本節的字符串問題上,在講述字符串拷貝函數前,我們再來回憶一下c語言中的字符串。'};char str3[] =  {'a', 'b', 'c', '\0'};char* str4 = "abc";printf("%d\n", strlen(str1));  printf("%d\n", strlen(str2));  printf("%d\n", strlen(str3));  printf("%d\n", strlen(str4));  上面就是c語
  • C語言基礎知識學習(二)
    函數C語言函數說明1. 一個C程序的基本結構包括預處理部分和函數部分;2.函數是C語言的基本單位;3. C語言程序開始於主函數,結束於主函數;4. C語言中沒有輸入輸出語句但有輸入輸出函數.c) putchar()用法:1)輸出字符2)不帶換行效果4.
  • C語言|字符串的複製、連接和比較及字符串長度
    字符串複製函數strcpy()strcpy(s1,s2);該函數把字符串s2複製到s1,直到遇到s2中的』\0』為止。s1要有足夠的空間容納s2,且s1中的內容被覆蓋,函數返回的是s1如果函數執行前s1有初值,那麼值被覆蓋由於函數返回值是s1,也可以直接輸出此函數2.
  • 輕鬆學做C語言課程設計:學生通訊錄管理系統
    一般課程設計考察的知識點:結構體、鍊表、文件讀寫、簡單排序和查找。往期課程設計:輕鬆學做C語言課程設計:圖書管理系統-數組實現輕鬆學做C語言課程設計:圖書管理系統-鍊表實現輕鬆學做C語言課程設計:學生成績管理系統-鍊表實現備註:1.不同C編譯器,對C語言程序編譯有差別,建議大家選擇相同的編譯器。
  • C語言程序設計學習筆記(第十一天)
    10];char *a[];4、程序參數int main(iny argc,char const*argv[])argv[0]是命令本身,當時用Unix的符號連結時,反應符號連結的名字;10.2 字符串函數1、putcharint putchar(int c)
  • C語言 -- 字符串詳解
    同時,C 語言提供了一系列庫函數來對操作字符串,這些庫函數都包含在頭文件 string.h 中。一、字符串常量和字符數組1.1、什麼是字符串常量C 語言雖然沒有字符串類型,但是 C語言提是存在字符串這個概念的,也就是字符串常量:以 NUL 字節結尾的 0 個或多個字符組成的序列。
  • C語言字符串詳解
    同時,C 語言提供了一系列庫函數來對操作字符串,這些庫函數都包含在頭文件 string.h 中。一、字符串常量和字符數組1.1、什麼是字符串常量C 語言雖然沒有字符串類型,但是 C語言提是存在字符串這個概念的,也就是字符串常量:以 NUL 字節結尾的 0 個或多個字符組成的序列。
  • 大學C語言課程設計——抽獎系統
    在C語言學習了一段時間之後,我們開始入了課程設計。初學了一些簡單的語法之後,感覺要完成一項工程還是有些困難的。    聽說在寫課程設計時,比起一下子打出來完,不如分模塊,分功能的有步驟的去寫。    課程設計的核心,是對鍊表的操作,實現動態鍊表的增、刪、改、查。
  • 單片機的C語言中數組的用法
    數組在C51語言的地位舉足輕重,因此深入地了解數組是很有必要的。下面就對數組進行詳細的介紹。(1)一維數組本文引用地址:http://www.eepw.com.cn/article/201611/320327.htm一維數組是最簡單的數組,用來存放類型相同的數據。數據的存放是線性連續的。
  • C語言字符數組和字符串
    字符串是幾乎在所有程式語言中可以實現的非常重要和有用的數據類型。在某些語言中它們可作為基本類型獲得,在另一些語言中做為複合類型獲得。多數高級語言的語法允許通常用某種方式引用起來的字符串來表示字符串數據類型的實例;這種元字符串叫做「文本」或「字符串文本」。
  • 單片機c語言字符串操作
    >char string[25];itoa(number,string,10);string就是123456 後面的10是說轉化成10進位 16就是轉化成16進位 8就是轉化成8進位 ,也可以轉化成2進位字符串截取 strncpy原型:char*strncpy(char*dest,char*src,size_tnum);大家知道strcpy
  • C語言中常用的6個字符串處理函數
    01.C語言基礎-數據類型02.C語言中算法的基本特性和表達方式03.C語言中的輸入輸出函數04.C語言基礎-循環控制語句05.C語言基礎-條件控制語句06.C語言基礎-控制語句示例07.C語言數組- 一維數組08.C語言數組- 二維數組09.C語言數組-字符數組
  • 常用C庫函數的實現
    實現C語言庫函數我們在課上也經常會給大家寫,但是都不夠全面。所以今天就給大家總結了一下。常見C庫函數的實現代碼奉上char *strcpy(char *dest, const char *src);char* strcpy(char *dest, const char *src){ if (dest == NULL || src
  • C語言知識點概要第二部分(數據類型)
    "\n有符號整型數據格式:\n"); printf("%d,%hd,%ld,%lld\n",a,b,c,d); printf("\n有符號和無符號字符類型數據格式:\n"); { char ch='a'; unsigned cha=255; printf("%c,%c\n整數格式輸出:\n%d,%u\n",ch,cha,ch,cha); } printf("\n無符號整型數據格式
  • 快速上手系列-C語言之字符串處理函數(一)
    C語言中常用的字符串操作函數,有比如計算字符串長度、字符串拷貝,字符串比較等這樣的整體操作函數,有字符串查詢函數,也有字符串轉換函數等等,這裡先介紹字符串整體操作函數。字符串整體操作函數實際編程中,經常遇到對字符串整體的控制等操作,比如長度測量函數strlen(),字符串拷貝函數strcpy()/strncpy(),字符串比較函數 strcmp()/strncmp(),字符串連接函數strcat()/strncat()等,這些函數是非常有用的。
  • C/C++中字符串常量的不相等性及字符串的Copy
    test")      {          cout<<"相等";      }      else      {          cout<<"不相等";      }  }  上面的代碼我們測試兩個內容為test的字符串常量是否相等,按照常理,應該是相等的,這些在一些過程式語言中會得到相等的結論
  • ARM中ADS環境下C語言和彙編語言混合編程及示例
    或asm關鍵字,用法如下:__asm{instruction [; instruction]}或 asm(instruction  [; instruction])。  下面是一個例子來說明如何在C中內嵌彙編語言  C語言文件.c httphi.baidu.comprocatlaw  #include stdio.h  void my_strcpy(const char src, char dest){  char ch;  __asm{  loop
  • 嵌入式C語言中 const 的多種用法
    當然,指針本身和它指向的數據都有可能是只讀的,下面的兩種寫法能夠做到這一點:const int * const p4;int const * const p5;const 和指針結合的寫法多少有點讓初學者摸不著頭腦,大家可以這樣來記憶:const 離變量名近就是用來修飾指針變量的,離變量名遠就是用來修飾指針指向的數據,如果近的和遠的都有