c語言strcmp代碼,在c語言中strcmp

本文目錄一覽:

求c語言實現strcmp功能的自編程序

#include stdio.h

int main()

{

int strcmp(char * p1,char * p2);

char * s1 = “hello world”;

char s2[] = “hello_world”;

char s3[] = “hello world”;

if(strcmp(s1,s2)==0){

printf(“String s1 and s2 are equal!\n”);

}

else{

printf(“String s1 and s2 are not equal!\n”);

}

if(strcmp(s1,s3)==0){

printf(“String s1 and s3 are equal!\n”);

}

else{

printf(“String s1 and s3 are not equal!\n”);

}

getchar();

return 0;

}

//自己編寫的一個比較字元串的函數

int strcmp(char * p1,char * p2)

{

for(;;)

{

if(*p1==’\0′  *p2==’\0′){

return 0;

}

if(*p1!=*p2){

return (*p1 – *p2);

}

p1++;

p2++;

}

}

幫我寫一個簡易的strcmp函數(C語言)。

① c的strcmp簡潔實現可以是這樣的:

int strcmp(const char* s1, const char* s2)

{

    while(*s1  (*s1==*s2))

        s1++,s2++;

    return *(const unsigned char*)s1-*(const unsigned char*)s2;

}

② strcmp的返回值可以有3種,即0, =0, 0 (任意一個數值),代表的含義分別是: str1 strcmp用的是二進位比較,意思是按字典順序,比如: 字母a 字母 b;而a A。 (這是因為a的ascii碼是97,而A的是65)。

理解了這個,上面的代碼就好理解了。 while就是s1,s2從頭到位一個一個字元的比較。如果s1為空,或者s1不等於s2,則中斷循環 (s1不為空,s2為空,則是*s1 != *s2,退出循環)。返回值是循環中斷時的字元(分別s1和s2對應的位置,*s1-*s2, 如果是上面說的 ‘a’ – ‘A’, 那麼返回的就是97-65=32),那麼意味著a在A前面, strcmp 0。

之所以先轉換成const unsigned char*再作減法,是由於c的char有三種: char, signed char 和unsigned char。 char就是’a’這樣的, 而 signed char 則是-127~126之間的數值,而unsigned char則是0~255之間的一個值。 轉換成unsigned char就是要「確保」 ‘a’ — 97。 你要不轉換,也是可以的。

說明一點,很多c的lib實現,比如gnu c, 都是把結果處理成: -1, 0, 1, 而不是這個字元對應的ascii碼的差值。

C語言strcmp函數是什麼樣的代碼

1、cmp

compare,比較的縮寫。

2、strcmp是c語言中頭文件string.h(字元串函數)中定義的一個用於對兩組字元串進行比較的函數,它的返回值是int類型。

假設有兩組字元串cs和ct,當csct時,函數返回一個負數;當cs==ct時,函數返回0;當csct時,函數返回一個正數。

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

,”a””a”

,”computer””compare”

,”comput””comp”

strcmp函數原型為:int

strcmp(const

char

*s1,const

char

*

s2);

C語言這段strcmp代碼是什麼意思

char a[20], b[20];

strcmp(a,b)是比較ab兩個字元串的大小

如果strcmp(a,b)==0,說明ab字元串相等

如果strcmp(a,b)0,說明a字元串大於b字元串,也就是a的字母順序應該在b後面

—-比如”abcd””aabc”, “bcde””abcd”

如果strcmp(a,b)0,說明a字元串小於b字元串,也就是a的字母順序應該在b前面

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/287320.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 13:07
下一篇 2024-12-23 13:07

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29

發表回復

登錄後才能評論