欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言字符串?dāng)?shù)組詳解

 更新時間:2021年08月14日 15:19:58   投稿:xusong  
這篇文章主要介紹了C語言字符串?dāng)?shù)組詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

C語言字符串?dāng)?shù)組

字符串是連續(xù)的字符序列,最后以空字符'\0'作為終止符。一個字符串的長度指所有字符的數(shù)量,但不包括終止符。在 C 語言中,沒有字符串類型,自然也就沒有運算符以字符串為操作數(shù)。

字符串被存儲在元素類型為 char 或?qū)捵址愋蛿?shù)組中(寬字符類型指 wchar_t、char16_t 或 char32_t)。寬字符組成的字符串也稱為寬字符串(wide string)。

C 標(biāo)準(zhǔn)庫提供了大量的函數(shù),它們可以對字符串進(jìn)行基本操作,例如字符串的比較、復(fù)制和連接等。在這些傳統(tǒng)的字符串函數(shù)以外,C11 新增了這些函數(shù)的“安全”版本,它們能確保字符串操作不會超出數(shù)組的邊界。

可以使用字符串字面量來初始化任何字符類型數(shù)組。例如,下面兩個數(shù)組的定義是等價的:

char str1[30] = "Let's go";             // 字符串長度:8;數(shù)組長度:30
char str1[30] = { 'L', 'e', 't', '\'', 's',' ', 'g', 'o', '\0' };

存儲字符串的數(shù)組一定比字符串長度多一個元素,以容納下字符串終止符(空字符'\0')。因此,str1 數(shù)組能夠存儲的字符串最大長度是 29。如果定義數(shù)組長度為 8,而不是 30,就會發(fā)生錯誤,因為它無法包含字符串終止符。

如果在定義一個字符數(shù)組時,沒有顯式地指定長度,但使用了字符串字面量來對它進(jìn)行初始化,該數(shù)組的長度會比字符串長度多 1。如下列所示:

char str2[] = " to London!";    // 字符串長度:11 (注意開頭的空格);
                                                // 數(shù)組長度:12

下面的語句使用標(biāo)準(zhǔn)函數(shù) strcat()把字符串 str2 附加到字符串 str1 的后面(str1 數(shù)組長度必須足夠大以容納連接后的全部字符)。

#include <string.h>
char str1[30] = "Let's go";
char str2[ ] = " to London!";
/* ... */
strcat( str1, str2 );
puts( str1 );

調(diào)用 puts()后,輸出新的 str1 數(shù)組內(nèi)容:

Let's go to London!

str1 和 str2 的名字其實是兩個指針,它們指向各自數(shù)組的第一個字符。這樣的指針被稱為指向字符串的指針(pointer to a string),或者簡稱為字符串指針(string pointer)。

字符串處理函數(shù)(例如 scrcat()和 puts())需要接收字符串起始地址并將其作為參數(shù)。這樣的函數(shù)通常逐個字符地處理字符串,直到遇到結(jié)尾終止符'\0'為止。
例 1 是函數(shù) strcat()的另——種可能的實現(xiàn)方式。它采用從函數(shù)參數(shù)傳入的指針遍歷處理整個字符串。 【例1】函數(shù) strcat()

// 函數(shù)strcat() 將第二個字符串復(fù)制一份并附加到第一個字符串的尾部
// 參數(shù):指向兩個字符串的指針
// 返回值:指向第一個字符串的指針,此時已將第二個字符串連接到了其尾部
char *strcat( char * restrict s1, const char * restrict s2 )
{
  char *rtnPtr = s1;
  while ( *s1 != '\0' )                         // 找到字符串s1的尾部
    ++s1;
  while (( *s1++ = *s2++ ) != '\0' )    // 將s2的首字符替換掉s1的終止符
    ;
  return rtnPtr;
}

以 s1 地址為起始位置的 char 數(shù)組,其長度至少是兩個字符串長度的和再加上 1,以容納字符串終止符。在調(diào)用 strcat()之前,可以采用標(biāo)準(zhǔn)函數(shù) strlen()進(jìn)行測試,以確保長度沒有問題,函數(shù) strlen()返回其字符串參數(shù)的長度,如下所示:

if ( sizeof(str1) >= ( strlen( str1 ) + strlen( str2 ) + 1 ) )
  strcat( str1, str2 );

寬字符串字面量會加上一個前綴 L、u 或 U,它們是寬字符串的標(biāo)志。因此,wchar_t 數(shù)組的初始化過程如下所示:

#include <stddef.h>                        // 定義wchart_t類型
/* ... */
wchar_t dinner[] = L"chop suey";        // 字符串長度:10;
                                                // 數(shù)組長度:11;
                                                // 數(shù)組空間大?。?1 * sizeof(wchar_t)

到此這篇關(guān)于C語言字符串?dāng)?shù)組詳解的文章就介紹到這了,更多相關(guān)C語言字符串?dāng)?shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 快速模式匹配算法(KMP)的深入理解

    快速模式匹配算法(KMP)的深入理解

    本篇文章是對快速模式匹配算法(KMP)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++淺拷貝與深拷貝及引用計數(shù)分析

    C++淺拷貝與深拷貝及引用計數(shù)分析

    這篇文章主要介紹了C++淺拷貝與深拷貝及引用計數(shù)分析的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 一文搞懂c++中的std::move函數(shù)

    一文搞懂c++中的std::move函數(shù)

    這篇文章主要介紹了c++中的std::move函數(shù),在探討c++11中的Move函數(shù)前,先介紹兩個概念(左值和右值),對c++?std::move函數(shù)相關(guān)知識感興趣的朋友一起看看吧
    2022-07-07
  • C語言實現(xiàn)的猴子分桃問題算法解決方案

    C語言實現(xiàn)的猴子分桃問題算法解決方案

    這篇文章主要介紹了C語言實現(xiàn)的猴子分桃問題算法,較為詳細(xì)的分析了猴子分桃問題算法的原理與通過遞歸算法解決問題的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2016-10-10
  • C語言之復(fù)雜鏈表的復(fù)制詳解

    C語言之復(fù)雜鏈表的復(fù)制詳解

    這篇文章主要為大家詳細(xì)介紹了C語言之復(fù)雜鏈表的復(fù)制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • C++實現(xiàn)堆排序示例

    C++實現(xiàn)堆排序示例

    這篇文章主要介紹了C++實現(xiàn)堆排序示例,全文運用大量代碼完成堆排序,需要了解的朋友可以參考一下這篇文章
    2021-08-08
  • C++實現(xiàn)圖書管理系統(tǒng)

    C++實現(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C 語言編寫一個計算器界面(可視化界面和多功能)

    C 語言編寫一個計算器界面(可視化界面和多功能)

    今天給大家分享一個計算器功能,主要功能有加法減法乘除法求余功能,用戶可以在主菜單選擇需要計算的功能,接下來根據(jù)用戶輸入的數(shù)字進(jìn)行計算輸出結(jié)果,喜歡的朋友拿去用吧
    2021-06-06
  • c++支持coroutine的簡單示例

    c++支持coroutine的簡單示例

    這篇文章主要介紹了c++支持coroutine的簡單示例,使用的是linux 平臺做的,需要的朋友可以參考下
    2014-03-03
  • C語言模擬實現(xiàn)通訊錄程序過程

    C語言模擬實現(xiàn)通訊錄程序過程

    這篇文章主要介紹了C語言模擬實現(xiàn)通訊錄程序過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02

最新評論