C語言的字串函式

2021-09-23 07:47:46 字數 3748 閱讀 4207

字串:

乙個或多個字元的序列 如:』『hello world』』 (雙引號進告知編譯器他括起來的是字串)

字串都被儲存在char型別的陣列中。陣列又連續的儲存單元組成,字串中的字元被儲存在相鄰的儲存單元中,每個單元儲存乙個字元。

字串常量』『x』'和字元』x』的區別:

1.『x』是基本型別,而』『x』『是派生型別。

2.』『x』'實際上由兩個字元組成:'x』和空字元\0

簡單的彙總一下:

scanf():和 printf() 類似,scanf() 可以輸入多種型別的資料。

getchar()、getche()、getch():這三個函式都用於輸入單個字元。

gets():獲取一行資料,並作為字串處理

scanf()這裡不細說了哈。

1.getchar()

從鍵盤上讀入乙個字元,並顯示該字元(稱為回顯),通常把輸入的字元付給乙個字元變數,構成乙個賦值語句。

要注意的是,getchar()函式的括號中沒有引數,該函式的輸入一直到回車才結束。回車前的所有輸入字元都會逐個顯示在螢幕,但**只有第乙個字元作為函式的返回值。**同時。getchar()使用者在鍵盤上輸入乙個字元需要按一次回車鍵才能被接受。

2.getche()與getch()

格式:

ch=getch();

putchar(ch);

getch()函式不將鍵盤上輸入的字元回顯在螢幕上,所以如果用在密碼輸入上,是比較好的選擇。

getcge()將輸入的字元會回顯螢幕上。與getchar()不同的是,兩者都只接受一次輸入。

3.gets()函式

呼叫形式:gets(字串資料);

==在輸入字串時,必須使用回車作為輸入結束。==當然,這個回車符不屬於這個字串,有字串結束標誌\0在字串的最後來替代它。gets()函式返回乙個指標。

puts()函式

puts函式很容易使用,只需要把字串的位址作為引數傳遞給它即可。

#includeint main(void) 

該程式輸出如下:

an array was initialized to me

a pointer was initialized to me

ray was initialized to me

inter was initialized to me

如上圖所示,puts()函式輸出時會自動在字串末尾新增乙個換行符。

該例項說明,用雙引號括起來的內容是字串常量,且被視為該字串的位址。另外儲存字串的陣列名也被看作是位址。其中表示式:&str1[5]時str1陣列的第6 個元素(r),puts()函式從該元素開始輸出。同理,最後乙個puts()呼叫時,str2+4指向儲存"pointer"中i的儲存單元,puts()從這裡開始輸出。

puts()函式在遇到空字元的時候就停止輸出,所以必須確保有空字元。

fputs()函式

fputs()函式是針對檔案定製的版本。與puts()函式區別如下:

fputs()函式的第二個引數指明要寫入資料的檔案。

與puts()函式不同,fputs()函式不會自動在輸出的末尾新增換行符

注意,gets()函式丟棄輸入中的換行符,但是puts()函式在輸出中新增換行符。另一方面fgets()函式保留輸入中的換行符,fputs()函式不在輸出的末尾新增換行符。

printf()函式

printf()函式的執行機制在站上申請儲存空間,規則為先進後出。printf()不會自動在每個字串末尾加上乙個換行符。因此,b必須在引數中指明在**使用換行符。格式:printf("%s",字串名稱); 若輸出的為字元則使用%c。

字串函式所屬函式庫:

strlen( )函式

strcat( )函式

用於拼接字串

格式:strcat(字元陣列1,字串2)

接受兩個字串作為引數,該函式把第二個字串的備份附加在第乙個字串的末尾,並把拼接後的新字串作為第乙個字串,第二個字串不變。字元陣列1只能是字元陣列名,字元陣列2可以是字串常量或字元陣列名。strcat()函式型別為char*(指向char的指標),strcat函式返回第乙個引數,即字元陣列1的首位址。

注意:第乙個字串所在的陣列必須要能夠容納第二個字串。所以分配給第乙個陣列的空間一定要足夠大。否則會造成越界上的混亂。

例如:

char str1[30]="i am a ";

puts(stract(str1,"student. "););

執行時輸出:i am a student.

strncat( )函式

與strcat()函式不同的是,該函式無法檢查第乙個陣列是否能容納第二個字串。

注意,要給拼接後的字串長度加1才夠空間存放末尾的空字元。或者,用strncat()該函式的第3個引數指定了最大新增字元

例如:strncat(bugs,addon,13)將把addon字串的內容附加給bugs,在加到第13個字元時或者遇到空字元時停止。

因此,算上空字元,bugs陣列應當足夠大,以容納原始字串,新增在原始字串後面的13個字元以及空字串。

strcpy( )函式

字串複製函式。

格式:strcpy(字元陣列1,字串2);

功能:講乙個一直的字串拷貝複製到指定的字元陣列或字元指標中。該函式返回新複製的字串的首位址。

執行該函式將字串2複製到字元陣列1的位址空間中,複製的時候包括字串2的結束符』\0』。

注意:字串的複製一定不能採用賦值運算子(=)進行複製。

strcpy()函式還有另外兩個有用的屬性:

strcpy()的返回型別為char *,該函式返回的是第乙個引數的值,及第乙個字元的位址。

第乙個引數不必指向陣列的開始。

strcmp( )函式

字串比較函式

格式:strcmp(字串1,字串2);

功能:字串內容的比較,返回比較結果。首先強調的是內容,不是字串的位址!,也不是比較陣列。

它對字串1和字串2中的所有字元從左至右逐個按照其ascii碼值進行比較,直到字元值不相等或遇到字串的結束標誌』\0』時結束。

比較結果:如果兩個字串相等返回整數0。如果兩個字串不相等且字串1的字元較大,則函式返回正整數,否則函式返回負整數。

注意:大寫字母比相應小寫字母的ascii碼值小32

字串的比較不可使用關係運算子進行比較。

下面是例子參考:

#include#includeint main(void)

輸出結果:

strcmp("a","a") is 0

strcmp("a","b") is -1

strcmp("b","a") is 1

strcmp("c","a") is 1

strcmp("z","a") is -1

有的系統的返回值可能不一樣,例如「c」和"a"的比較,就可能返回2,即兩者的ascii碼差值。

那如果像最後一組字串的比較,開始的幾個字元都相同會怎樣?一般而言,strcmp()回一次比較每個字元,直到發現第一對不同的為止。然後返回相應的值。

c語言 字串函式

c語言中的字串函式 主要是兩大類,一類是拷貝的,一類是比較的,另乙個就是其他的 拷貝的有 1.strcpy 函式原型 char strcpy char strdestination,const char strsource 函式功能 將strsource的內容拷貝到strdestination中去,...

c語言字串函式

字串連線函式strcat 格式 strcat 字元陣列1,字元陣列2 功能 把字元陣列2連到字元陣列1後面 返值 返回字元陣列1的首位址 說明 字元陣列1必須足夠大 連線前,兩串均以 0 結束 連線後,串1的 0 取消,新串最後加 0 字串拷貝函式strcpy 格式 strcpy 字元陣列1,字串2...

C語言字串函式

1字串拷貝 strcpy str1,str2 str2 str1覆蓋 strncpy str1,str2,n 把str2的n個位元組賦給str1的前n個位元組,其他的不變 並不覆蓋 例子 str1 yaomingyue str2 kkkk strncpy str1,str2,3 結果 str1 kk...