【轉】C語言編程技巧:手把手教你如何定義及使用一個字符串數組


實現目的

我們在用C語言編寫程序時,經常會遇到使用字符串數組的情況,這種數組的特點是, 數組中的每個元素都是一個字符串,但每個字符串的長度卻不相同。如果你使用C++語言進行編程的話,實現起來相對比較簡單,只需直接選擇標准模板庫的字符串string類,在代碼中定義該類的一個數組即可實現。現在的問題是,在純C語言中如何定義這樣的一個字符串數組呢?

如對於下面的一個字符串數組:

str = {

“I love C.”,

“I love C++.”,

“I love JAVA.”,

“I love Python.”,

“I love LabVIEW.”

}

下面給出C語言中的兩種定義方法。

方法1:定義一個char類型的二維數組

這種方法是通過定義一個char類型的二維數組實現,通過二維數組的行索引可得到數組中的每個字符串,列的大小限定了每個字符串所能包含的最大字符個數,所以采用這種定義方式時,列的大小必須不能小於數組所有字符串的最大長度。如對於上面的數組,C語言的定義代碼如下:

 

 

在取該數組的每個字符串時,直接對行索引即可。

方法2:定義一個指向char類型的指針數組

這種方法是通過定義一個指向char類型的指針數組實現,數組中的每個元素都是一個指針,通過該指針可得到數組中的每個字符串。如對於上面的數組,C語言的定義代碼如下:

 

 

兩種方法對比

上面的兩種方法都可以實現我們的目的,但在內存的占用上兩種方法不同。第1種方法定義了一個5行20列的二維數組,即每個字符串所占的字節長度都為20個,所以共需要占用100個字節,而第2種方法是定義的指針數組,每個指針指向的字符串占用的字節長度是其實際長度,所以其總的長度肯定小於100個字節。綜合來講,第1種方法相對於第2種方法,造成了存儲空間的浪費情況。

字符串數組定義及使用的完整測試代碼

下面給出這個例子的完整的C語言測試代碼,如下圖所示:

 

 

程序運行結果如下圖所示:

 

 

總結

一般在C語言中定義字符串的數組時,推薦使用第2種方法,特別是對於單片機、嵌入式等方面的程序開發時,可以充分利用有限的硬件資源,避免存儲空間的浪費。

轉載鏈接 :C語言編程技巧:手把手教你如何定義及使用一個字符串數組

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM