這是寫的第一篇博客,從此開啓我的博客生涯。
今天想盡量把疑惑自己很久的C語言中字符和字符串的問題理一理,都是一些很基本的內容。
現在就開始吧!!!!
字符型數據:字符,字符串
字符:字符串常量,字符串變量
字符串:字符串常量,字符串變量
下面一一展開講解:
1,字符常量:
C語言中有兩類字符常量:
一類是用單撇號括起來的字符。如'a','x','d','?'等都是字符常量。
另一類是用一種特殊形式的字符常量,就是以一個字符“\”開頭的字符序列。
2,字符變量:
字符變量用來存放字符常量,它只能放一個字符。
字符變量定義形式如下:char c1,c2;
注意:
不要以爲一個字符變量中可以放一個字符串。
在所有的編譯系統中都規定以一個字節來存放一個字符。
字符變量在內存中是將相應的ASCII代碼放到存儲單元中,它的存儲形式就與整數的存儲形式類似。
3,字符串常量:
字符串常量是一對雙撇號括起來的字符序列。
注意:
'a'和"a"的不同。
字符串以字符'\0'結束,程序常利用該結束符作爲判斷字符串結束的標記,從而實現對字符串的輪詢操作。
在C語言中,沒有專門的字符串變量,如果想將一個字符串存放
在變量中以便保存,
必須使用字符數組,即用一個字符型數組來存放一個字符串,數
組中每一個元素存放一個字符。
4,字符數組:
用來存放字符數據的數組;字符數組中的一個元素存放一個字符。
在C語言中,是將字符串作爲字符數組來處理的。
初始化:
char c[ ] = {"I am happy"};
char c[ ] = "hello world"; //不用花括號
注意:數組c的長度是11,而不是10.
因此上面的初始化與下面的初始化等價:
char c[ ] = {'I',' ','a','m',' ','h','a','p','p','y','\0'};
而不與下面的等價:
char c[ ] = {'I',' ','a','m',' ','h','a','p','p','y'};
字符數組的輸入輸出:
有以下兩種方法:
1,用格式控制符“%c”逐個字符輸入輸出。(利用for循環實現)
2,將整個字符串用控制符“%s”一次輸入或輸出。
字符串常用處理函數:
//1,求字符串的長度:strlen()
//2,字符串拷貝:strcpy()
//3, 字符串比較:strcmp( )
//4,從字符串中尋找字符:strchr( )
//5,從字符串中尋找子串:strstr( )
//6,從字符串中刪除子串:strdel( )
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
scanf :當遇到回車,空格和tab鍵會自動在字符串後面添加'\0',但是回車,空格和tab鍵仍會留在輸入的緩衝區中
printf,scanf,以控制符%s輸入輸出時,遇到空格輸入輸出結束。
以下幾個常用字符串的C函數:(以下內容爲轉載)
1.輸入字符串──gets()函數(1)調用方式:gets(字符數組)(2)函數功能:從標準輸入設備(stdin)──鍵盤上,讀取1個字符串(可以包含空格),並將其存儲到字符數組中去。(3)使用說明 1)gets()讀取的字符串,其長度沒有限制,編程者要保證字符數組有足夠大的空間,存放輸入的字符串。 2)該函數輸入的字符串中允許包含空格,而scanf()函數不允許。
2.輸出字符串──puts()函數
(1)調用方式:puts(字符數組)
(2)函數功能:把字符數組中所存放的字符串,輸出到標準輸出設備中去,並用‘\n’取代字符串的結束標誌‘\0’。所以用puts()函數輸出字符串時,不要求另加換行符。
( 3)使用說明
1)字符串中允許包含轉義字符,輸出時產生一個控制操作。
2)該函數一次只能輸出一個字符串,而printf()函數也能用來輸出字符串,且一次能輸出多個。