C 語言陣列儲存漢字問題小結

2021-10-25 00:24:49 字數 2934 閱讀 9866

在討論陣列儲存漢字之前,首先要明確乙個基本概念:漢字儲存占用空間大小與使用何種編碼方式有關。

常見的中文編碼gb2312(國標簡體中文字符集)和gbk(國標擴充套件)使用2 個位元組編碼來表示乙個漢字,不常用的gb18030使用4 個位元組編碼來表示乙個漢字,更通用的utf-8編碼使用3 個位元組編碼來表示乙個漢字。關於編碼方式的更詳細的介紹請移步文末參考鏈結。

以下總結了gbutf-8字符集下,對儲存漢字的陣列進行初始化的例項。

一、在使用 gb2312 或 gbk 字符集時,使用如下例項進行初始化:

1. 使用陣列儲存1個漢字

char a=

"字";

// 定義乙個漢字的陣列

char a=

;// 也可以加上

這兩種情況系統都會在後面自動加上'\0'

,即a[2]

='\0' 漢字佔2個位元組a[

0]和a[1];

也可以這樣:

char a[3]

="字"

;char a[3]

=;以上兩種方法定義的空間是一樣大的,都是3個位元組。

char i;

for(i=

0;i<

3;i++

)使用 char 時 output:a[0

]=0xffffffd7;a[

1]=0xffffffd6;a[

2]=0x00

;使用 unsigned

char 時output: a[0

]=0xd7;a[

1]=0xd6;a[

2]=0x00

;

2. 使用陣列儲存漢字字串
char a=

"漢字字串"

;// 定義多個漢字的陣列

char a=

;// 也可以加上

同樣系統會在後面自動加上'\0'

,即 a[10]

='\0' 漢字佔10個位元組a[0]

~a[9

];也可以這樣:

char a[11]

="漢字字串"

;char a[11]

=;以上兩種方法定義的空間是一樣大的,都是11個位元組。

3. 陣列空間大於漢字字元數的情形
char a[11]

="漢字"

;char a[11]

=;這種方法定義陣列,系統會將 a[5]

~a[10

] 自動新增'\0'。

4. 多維陣列的使用
char a[2]

[9]=

;//使用多維陣列的情形

char a[2]

[9]=

,};//也可以加

其中:a[0]

="多維陣列";a[

1]="這樣表示"

;

5. 字元指標的使用
char

* arrayname =

"使用字元指標"

;// 同樣可以加

或:char

* arrayname;

arrayname =

"使用字元指標"

;// 同樣可以加

char

* arrayname[2]

=,};

或:char

* arrayname[2]

;arrayname[0]

="字元指標陣列"

;// 同樣可以加

arrayname[1]

="字元指標陣列"

;

6. 陣列之間傳遞漢字
系統中漢字的輸入,一般由鍵盤輸入、檔案讀取、遠端通訊等介面函式輸入,其本質上還是對字元的傳遞,下面給出最簡單的傳遞漢字的方法:

char i;

char a[2]

[9];

char b[9]

=;for(i=

0;i<

9;i++

)printf

("%s"

,a[0])

;output:傳遞漢字

二、在使用 utf-8 字符集時,單個漢字占用 3 個位元組空間,其它與使用 gb2312 或 gbk 字符集的初始化方法一樣:

這裡僅列出使用陣列儲存 1 個漢字的例項

char a=

"字";

// 定義乙個漢字的陣列

char a=

;// 也可以加上

這兩種情況系統都會在後面自動加上'\0'

,即 a[3]

='\0' 漢字佔3個位元組 a[

0]、a[

1]和a[2];

也可以這樣:

char a[4]

="字"

;char a[4]

=;以上兩種方法定義的空間是一樣大的,都是4個位元組。

char i;

for(i=

0;i<

4;i++

)使用char時output:a[0

]=0xffffffe5;a[

1]=0xffffffad;a[

2]=0xffffff97;a[

3]=0x00

;使用unsigned

char時output: a[0

]=0xe5;a[

1]=0xad;a[

2]=0x97;a[

3]=0x00

;

儲存類別小結 c語言

說在前面 文件根據工作都是在有道雲筆記儲存,這些都是存貨。發布出來大家學習,希望對大家有幫助!下面從不同角度做歸納 1 從作用域角度分,有區域性變數和全域性變數 靜態外部變數 只限文字引用 內部鏈結 按作用域角度分 自動變數,即動態區域性變數 離開函式,值就消失 區域性變數 靜態區域性變數 離開函式...

C語言陣列排序小結

讓我們先定義乙個整型陣列a n 下面用五種方法對其從小到大排序。1 冒泡法 冒泡法大家都較熟悉。其原理為從a 0 開始,依次將其和後面的元素比較,若a 0 a i 則交換它們,一直比較到a n 同理對a 1 a 2 a n 1 處理,即完成排序。下面列出其 void bubble int a,int...

C語言陣列排序小結

很多朋友是以譚浩強老師編的 c語言教程 作為學習c語言的入門教程的。書中涉及排序問題一般都以 冒泡法 和 選擇法 實現。為了擴大視野,增加學習程式設計的興趣,我參閱了有關書籍,整理了幾種排序法,寫出來同大家共勉。高手們不要笑,這篇文章是寫給出學者的,而且我自己也是只菜鳥,雖然內容陳舊,但值得初學者一...