字元陣列與字串
字串就是字元的序列,可看作單個資料項。定義在雙引號之間的字元組(雙引號除外)就是乙個字串常量。例:"man is abviously made to think"。
字串變數的宣告與初始化:c語言並不支援字串資料型別。但是,它允許作為字元陣列來表示字串。因此在c語言中,字串變數就是任何合法的c變數名,且總是被宣告為乙個字元陣列。其宣告的一般形式為char string_name[size]; size確定了string_name的字元數。如:char city[10];char name[30];當編譯器把字串賦給字元陣列時,自動的在字串的末尾加上空字元('\0')。因此,size必須大於等於字串中的最大字元數再加上1。
c語言允許以下兩種方式初始化:char city[9]="new york"; char city[9]=;
c語言可以不用指定元素的數目來初始化字元數目,這時陣列的大小將根據初始化元素的數量自動確定。
可以把陣列的大小定義的字串更大。如char city[100]="good";是合法的。而下面的這個就不合法char city[2]="what";這將導致編譯器的乙個錯誤。不能把初始化從宣告中分隔出來,如:
char str3[5];
str3[5]="what";
是不允許的。
下面這個語句也是不允許的:
char a[4]="abc";
char b[4];
b=a;
陣列名不能用作賦值運算子的左運算元。
使用scanf函式從終端讀取字串:
一般格式為 char address[size];
scanf("%s",address);
這種讀取方法的問題是,一量遇到空白符(包括空格、制**、回車符、樣式縮排和換行符),就停止輸入。所以如果在終端輸入如下的文字行:new york則只有字串new讀入陣列address中。
如果要讀取整行的字元"new york",就要使用兩個大小適合的字元陣列。
main()
寫乙個程式,使用scanf函式從終端讀取一系列數。
main()
輸入:oxford road, london m17ed
輸出:oxford
road,
london
m17ed
也可以scanf語句中使用%ws格式說明符指定欄位的寬度,用於從輸入字串中讀取指定數量的字元。
在上面的例子第五行中,把"%s%s"改為"%2s%s",則輸出:
oxford
road,
london
字串處理函式(puts,gets,strcat,strcpy and strncpy,strcmp,strlen,strlwr,strupr)
1:puts函式
一般形式 puts(字元陣列)
作用是將乙個字串(以'\0'結束的字串行),輸出到終端。
main()
;puts(str);
}輸出:i
love
china
2:gets函式
一般形式 gets(字元陣列)
作用是從終端輸入乙個字串到字元陣列,並且得到乙個函式值。該函式值是字元陣列的起始位址。
main()
輸入:sorry seems to be the hardest word.what i got to do to make you love me?
輸出:sorry seems to be the hardest word.what i got to do to make you love me?
注意用puts和gets函式只能輸出或輸入乙個字串,不能寫成
puts(str1,str2)或gets(str1,str2)
3:strcat函式
一般形式 strcat(字元陣列1,字元陣列2)
其作用是邊接兩個字元陣列中的字串,把字串2邊接到字串1的後面,結果放在字元陣列1中,函式呼叫後得到乙個函式值——字元陣列1的位址。
main()
;char str2=;
printf("%s",strcat(str1,str2));
getch();
}輸出:what i got to do to make you love me.sorry seems to be the hardest word
連線前兩個字串的後面都有'\0',連線時將字串後面的'\0'取消,只在新串啊後保留'\0'.
main()
該函式是從終端輸入兩個字串,並顯示出來。
4 strcmp函式
其一般形式為strcmp(字串1,字串2)
它的作用是比較字串1和字串2。可有以下幾種形式:
strcmp(str1,str2);
strcmp("china","korea");
strcmp("str1,"beijing");
字串比較的規則與其它語言中的規則相同,即對兩個字串自左至右逐個字元相比(按ascii碼值大小比較),直到遇到不同的字元或遇到'\0'為止。如:
"a">"a","computer">"compare","dog"<"cat"...
比較的結果由函式值帶回。
如果字串1=字串2,則函式值為0;
如果字串1>字串2,則函式值為乙個正值;
如果字串1《字串2,則函式值為乙個負值;
#include
main()
else
}5 strlen函式
一般形式為strlen(字元陣列)
它的作用是測試字串長度的函式。函式的值為字串中的實際長度,不包括'\0'。例:
char str[10]=;
printf("%d",strlen(str));
輸出的結果不是10,也不是6,而是5。
6 strlwr函式和strupr函式
其一般形式為strlwr(字串);
作用是將字串中的大寫字母轉換成小寫字母。
strupr函式與strlwr函式正好相反,它是把字串中的小寫字母轉換成大寫字母。
字元陣列與字串
字元陣列與字串 6.3.1 字元陣列的逐個字元操作 案例6.5 從鍵盤輸入乙個字串,回車鍵結束,並將字串在螢幕上輸出。main i 0 while str x0d printf c str i printf n getch 1 字元陣列的定義 1維字元陣列,用於儲存和處理1個字串,其定義格式與1維數...
字元陣列與字串
char str 6 char str2 6 world printf s n str scanf s str2 for i 0 str i 0 i 說明 系統為了明確區分記憶體上的字串從屬關係,它會去尋找空字元,ascii嗎為0 我們稱為結束符,從陣列名指標位一直往後找,知道找到空字元為止。既然字...
字串與字元陣列
用scanf輸入字串 include int main scanf s s s 的作用就是輸入乙個字串的,scanf是以回車鍵作為輸入完成標示的,但回車鍵本身並不會作為字串的一部分 如果scanf引數中的陣列長度小於使用者在鍵盤輸入的長度,那麼scanf就會緩衝區溢位,導致程式崩潰 int i fo...