字元就是符號、圖案,在計算機中以整數形式儲存,當需要顯示時會根據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 是靜態...