為什麼字元串相同卻不相等c語言,c語言 字元串相等

本文目錄一覽:

C語言小程序:兩字元串為什麼不相等?

比較兩個字元串是否相等,要用strcmp函數。不能直接用==比較,用==比較的是兩個字元串的首地址。

C語言 字元串相等的問題

字元串的比較是逐個比較的,字元串最後一位為「\0」,while循環完,指針均指向字元串尾部,if()判斷為真,說明是2個相等的字元串,返回1,不相等返回0;scanf()是要存放的變數的地址,這個是有標準的;c是比較底層的,可以讓我們詳細知道函數的運作,不比其它語言,只知道怎麼用便可

C語言測試字元串是否相等,為什麼下面兩個字元串被認為不等,可如果我把字元空間擴大到十以上又相等了?

1~9有九個數,你的數組長度只有9.你的字元串結束標記「 \0」存在哪裡的?

請把數組長度都先改成10或以上.

arr[8] == ‘9’ arr[8] 後面的東西你知道是什麼東西么? 天知道內存順序是怎麼分配的,天知道你不申請足夠的內存,那個『\0』什麼時候才會遇到。

天知道arr[8] tmp[8]之後是什麼? 你沒有手動設置 \0 或沒有足夠的空間讓編譯器幫助你添加’\0′ 結束標記,程序就一直往後面找直到有一個結束.

***

思考一下:假如你是一個 strcmp函數,別人傳入的參數就只有兩地字元串的首地址,你從這兩個首地址對應的字元開始比較,一個一個往後比較,什麼時候停止了? 莫非不停止比到天荒地老.

先學習正確的寫法,錯誤的寫法為什麼有時候會錯有時候會對先別研究了。

理解一下strcmp的實現邏輯.

int strcmp( char* s , char* t)

{

int ret_val = 0;

while(*s *t) /* 兩個同時不為結束標誌 */

{

if(*s *t)

{

return 1;

}

else if(*s == *t)

{

/*若相等則去比較下一個字元*/

s++;

t++;

}

else

{

return -1;

}

}

/*其中有一個為0*/

if(*s *t)

{

/* *s != 0 , *t == 0 */

return 1;

}

else if(*s == *t)

{

/* 兩個都為0 */

return 0;

}

else

{

/* *s == 0 , *t != 0 */

return -1;

}

}

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

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

相關推薦

  • Python字元串寬度不限制怎麼打代碼

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

    編程 2025-04-29
  • Python中將字元串轉化為浮點數

    本文將介紹在Python中將字元串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字元串轉化為…

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

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

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

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

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

    編程 2025-04-29
  • Python學習筆記:去除字元串最後一個字元的方法

    本文將從多個方面詳細闡述如何通過Python去除字元串最後一個字元,包括使用切片、pop()、刪除、替換等方法來實現。 一、字元串切片 在Python中,可以通過字元串切片的方式來…

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

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

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python如何將字元串1234變成數字1234

    Python作為一種廣泛使用的編程語言,對於數字和字元串的處理提供了很多便捷的方式。如何將字元串「1234」轉化成數字「1234」呢?下面將從多個方面詳細闡述Python如何將字元…

    編程 2025-04-29

發表回復

登錄後才能評論