一.
1.字符占據一個字節
2.字符數組:char name[15] = { 'W', 'a', 'n', 'g', 'L', 'i'};
字符串:char name[15] = “Wang Li”;
二.
1.字符串:為有效長度(有效字符的個數)而不是字符數組的長度;
2.(1)按%c格式,逐個字符地單獨輸入/輸出(一個一個的輸入)
(2)按%s格式,將字符串作為一個整體輸入/輸出。
scanf(“%s” , str ); //讀入一個串,直到遇到空白字符(空格、回車符或制 表符)為止。
(3)使用字符串處理函數gets(),可以輸入帶空格的字符串。(有些OJ系統,限用gets。)
(puts函數只能用于輸出字符串,并且會自動在輸出的字符串末尾添加換行符。一般用printf)
注意:(1)用%d輸入數字或%s輸入字符串時,讀到空格、回車或制表符等空白字 符時,系統會認為數據讀入結束。
(2) 因此用函數scanf()按%s格式不能輸入帶空格的字符串。
(3)gets和getchar是不同的函數,分別用于讀取字符串和單個字符
(4)
while( (str[i]=getchar())!='\n' )i++ ;//字符串輸入的常用套路,或: while(scanf("%c",&str[i]), str[i] != '\n')
三.?字符串處理函數
#include <string.h>
1.puts( ) / gets( )//輸入/輸出
2.strlen( str?) //求串長? (或strlen("China"))
3.strcat( str, t ) //串連接
【把str2中的字符串連接到str1字符串的后面,結果放在str1數組中)】
4.strcmp( str , t ) //串比較
【對兩個字符串自左至右逐個字符相比(按ASCII碼值大小比較), 直到出現不同的字符或遇到‘\0’為止。
?如果全部字符相同,則認為相等;若出現不相同的字符,則以第 一個不相同的字符的比較結果為準。
(1) str1與str2完全相等,返回0;
(2) str1大于str2,返回一個正整數;
(3) str1小于str2 ,返回一個負整數。
注意:比較兩個字符串的大小只能使用此函數, 而不能使用“>”、“<”、“==”等關系運算符。】
5.strcpy( str , t ) //串拷貝
【將str2中的字符串復制到str1數組中。(char str1[10] = “China”; 正確)
(char str1[10 ]; str1 = “China”; 錯誤?)
(改為: char str1[10 ]; strcpy(str1, “China”);)
注意:為什么不允許這樣賦值? 因為數組名是一個常量, 代表數組的首地址;常量不可以被賦值,其值不可改變。】