在c當中有一種陣列是由char型別構成的,其中的元素都是字元,如果這個字元陣列是以字元編碼0('0'字元)結尾的,那麼我們就叫這個字元陣列為字串
字串的資料常量形式是使用雙引號包圍的字串行
1 字串的宣告和初始化
我們可以宣告乙個字元陣列,然後用乙個字串賦值
char str[10] = "hello";
這裡表示在記憶體當中開闢一塊空間,大小是10個char型別的長度,同時依次的在空間當中存入字元資料,最終結束的時候新增0
這裡需要注意的是,如果字串的宣告和賦值不在一條語句當中,那麼就不能使用字串常量的賦值方式,而是需要逐個字元依次賦值
#includeint main()
這個程式會出錯
正確的方式是
但是過於繁瑣,所以我們一般都是直接在宣告字串的時候賦值
#includeint main()
在宣告字串的時候,如果同時進行了初始化,那麼可以省略字串陣列的長度,會自動計算
#includeint main()
這裡需要注意的是字元陣列的長度和其所儲存的字串的長度是不一致的
字串的長度是字串當中的字元個數,而字元陣列長度是在記憶體當中準備的儲存字串的空間大小,一般字元陣列的長度要大於字串的長度
這裡使用了乙個新的庫函式strlen(),用來獲取字串的長度
輸入和輸出字串的時候需要使用%s作為佔位符
2 轉義字元
每乙個字元都會對應著乙個數字,我們稱之為字元編碼,字元編碼的集合就叫做字符集,我們在使用字元的時候可以直接使用字元的實體,也可以使用轉義字元,轉義字元使用開頭加上乙個八進位制或者16進製制的整數
比如說,a的ascii字符集是97,那麼我們輸出a的時候可以直接使用字元'a',也可以使用97的8進製
141,也可以使用16進製制61
8進製直接寫數字就可以,16進製制在數字之前加上x
#include #include int main()
在字串當中也可以使用轉義字元,比如說
這裡利用轉義字元輸出了hello world
對於可見的字元我們通常不會使用字元編碼,而是直接使用字元實體,通常轉義字元都是用來輸出不可見的控制字元,比如說換行符,回車符,製表符,
但是去記憶不可見字元的字元編碼通常會比較困難,所以常見的不可見的控制字元都會有乙個簡寫形式
比如常用的換行符
3 字串處理函式
c語言當中自帶了一系列的字串處理函式,比如之前使用過的strlen(),要使用這些函式需要引入string.h標頭檔案
標準庫標頭檔案 zh.cppreference.com
這裡介紹幾個比較常用的字串處理函式
strcopy()
strcopy(字串1,字串2),把字串2複製到字串1當中
#include#includeint main()
strcat()strcat(字串1,字串2),把字串2連線到字串的末尾
strlen(字串),返回字串的長度
這裡說的字串長度是指在字元陣列當中,從第乙個字元到'0'之前的字元數量,不包括('0')
strcmp()
strcmp(字串1,字串2),比較字串的大小
字串大小的比較規則是:以各個字元對應的 ascii 碼值進行比較
strcmp() 從兩個字串的第 0 個字元開始比較,如果它們相等,就繼續比較下乙個字元,直到遇見不同的字元,或者到字串的末尾。
如果字串1和字串2相同,就返回0;
如果字串1大於字串2,就返回返回大於 0 的值;
如果字串1小於字串2,就返回返回小於 0 的值;
#include #include int main()
python字串比較大小
字串按位比較,兩個字串第一位字元的ascii碼誰大,字串就大,不再比較後面的 第乙個字元相同就比第二個字串,以此類推,需要注意的是空格的ascii碼是32,空 null 的ascii碼是0 ord 函式接受乙個字元 print max 1 2 3 3 print max 31 2 3 31 prin...
Python字串比較大小
字串按位比較,兩個字串第一位字元的ascii碼誰大,字串就大,不再比較後面的 第乙個字元相同就比第二個字串,以此類推,需要注意的是空格的ascii碼是32,空 null 的ascii碼是0,大寫字母和小寫字母的ascii不同 m abc abc bac abc print m 0 m 1 print...
php 字串 大小,字串如何比較大小?
字元比較 character comparison 是指按照字典次序對單個字元或字串進行比較大小的操作,一般都是以ascii碼值的大小作為字元比較的標準。字串比較的時候,字串的大小是從最左邊第乙個字元開始比較,大者為大,小者為小,若相等,則繼續比較後面的字元 比如abc與acde比較,第乙個字元相同...