C語言之字串

2021-09-24 00:23:26 字數 4044 閱讀 2560

字元就是符號、圖案,在計算機中以整數形式儲存,當需要顯示時會根據ascii表中的對應關係,顯示相應的符號或圖案。

字元型別(char)的資料(如字元a,a,0,$等)在記憶體中以對應的ascii碼存放,不同字元所對應的ascii碼見下表。

計算機用乙個位元組(8個二進位制位)儲存乙個字元,例如,字元a的ascii碼為65,它在記憶體中以如下形式存放:

除了可以使用scanf()函式、printf()函式處理單個字元的輸入/輸出,在函式呼叫的格式控制字串中對應的格式說明符用%c外,c語言還提供了只能處理單個字元的輸入輸出函式getchar()和putchar()。

字元輸出函式:putchar()

#include

intmain()

/**執行:

aa↙aa

**/

注意:putchar()函式的引數可以是字元資料(包括轉義字元)、整型資料,將該值看成某字元的ascii碼,輸出對應字元。

字元輸入函式:getchar()

#include

intmain()

/**輸入:

a b c↙

輸出:a b

**/

注意:空格符、製表符和回車符都是合法的ascii字元,在輸入時會被當做普通字元被接收。

字串是由字元組成的串型結構,它的結束標誌是』\0』。其中的字元可以包含字元、數字、其他字元、轉義字元、漢字。

在c語言中,字串儲存在一維字元陣列中。每個字串常量有乙個字串結束標誌』\0』隱藏在串最後,標誌著該字串結束。

char str[6]

=;//也可以用字串初始化陣列,上述初始化等價於

char str[6]

=;//或char str[6]

="china"

;//如果給出了全部元素的初值,則可以省略長度,長度會根據字串自動調整

未初始化或賦初值的陣列元素值不確定:

初始化的陣列,元素值預設為』\0』:

注意:陣列的長度必須比字串的元素個數多1,用來儲存字串的結束標誌』\0』。

陣列名是位址常量,不能將字串直接賦值給陣列名。

char c[6];c="china"非法的

字串到第乙個』\0』結束,所以常用』\0』判斷字串是否處理完畢。

char c = "abc\0def"字串實際存放的是"abc";

字串儲存在唯讀段,不能被修改。一般常用字串字元值來初始化字元陣列,編譯器會自動把字串字面值拷貝到陣列中,包括』\0』,之後這個字串就有了兩份,乙份在棧中,另乙份在唯讀段。

int

main()

字串輸出函式printf()和puts()會逐個輸出字串中每個元素,知道遇到』\0』。

printf

("%s"

,str)

;puts

(str)

//會自動在末尾新增乙個'\n'。

字串輸入函式

//scanf()用格式符"%s"輸入若干個字元(可以是漢字)到字元陣列,遇到空格、製表符或回車符終止,並寫入'\0'。

scanf

("%s"

,str)

;//gets()讀入一串以回車結束的字元(可以接收空格),順序存入到以str為首位址的記憶體單元中,並在最後寫入'\0'。

gets

(str)

;//fgets()能接受到size-1個字元(要為'\0'預留乙個)。注意:當輸入的字元不足size-1個時會連'\n'一起接收。

fgets

(str,size,

stdin

);

字串一般儲存在字元陣列中,對字串的訪問可以逐個訪問陣列元素中的字元,或者利用指標訪問字串。

字串指標指向字串的首字元,它實際上是字元指標,其物件是字元。

字串通常儲存在字元陣列中,其陣列名就是這個字串的指標。

標頭檔案:string.h

strlen

功能:計算字串中字元的個數(不計』\0』)。

c語言原始碼:

size_t __cdecl strlen (

const

char

* str)

strcat

功能:把字串2包括(』\0』),複製到字串1後,函式返回字串1。

c語言原始碼:

char

* __cdecl strcat (

char

* dst,

const

char

* src)

strcpy

功能:字串2複製到字串1中,從字串1指標指的位置開始依次儲存字串2,函式返回值為字串1指標。

c語言原始碼:

char

* __cdecl strcpy

(char

* dst,

const

char

* src)

strcmp

功能:比較字串1和字串2兩個字串的大小。兩字串相同則函式返回值為0;字串1>字串2則返回值為1;否則返回-1。

c語言原始碼:

int __cdecl strcmp (

const

char

* src,

const

char

* dst)

atoi, atol, atoll

功能:將字串轉為整數。逐個將字串轉為整數,如果有非整數字元,則終止。

c語言原始碼:

long __cdecl atol

(const

char

*nptr)

if(sign ==

'-')

return

-total;

else

return total;

strstr

功能:在str1中查詢str2。如果有,返回str2在str1中首次出現的位置下標,如果沒有返回null。

c語言原始碼:

char

* __cdecl strstr (

const

char

* str1,

const

char

* str2)

return

(null);

}

C語言之陣列 字串

陣列 一 陣列的定義和賦值 int ages 5 每個元素佔4個位元組,整個陣列的大小為4 元素個數5 int ages 定義陣列可以不宣告長度,後邊大括號裡的元素個數決定陣列的長度 int ages a a 65,所以這個陣列的長度為65 ages 0 29 為某乙個元素賦值或替換 二 陣列的遍歷...

C語言之字串輸出

1.前導程式 1 include2 include 1提供strlen 的函式原型 3 define density 62.4 2預處理命令 4int main void 5 2.關於字串 1 字串是乙個或多個字元的序列。如 i am a student 2 c語言用空字元來標記乙個字串的結束。陣列...

C語言之字串,陣列

注意char a abcdef 與char a abcdef 的區別 1 字串存放的記憶體區域不同 前者存放在常量區,不可修改,後則存放在棧中,可以修改 2 變數a存放的內容不同 前者存放的是乙個位址,而後者存放的是字串 abcdef 因此使用sizeof它們的結果是不同的,分別是4和7 c 是靜態...