字元型資料是以ascii**儲存在儲存單元中的,一般占用乙個位元組。由於ascii屬於整數形式,所以在c99標準中,把字元型別歸納為整型型別的一種:
int c[10];
c[0]='a'; //賦值
char c[10]=; //預定義好大小
char c=; //自動開闢空間
c語言中,是將字串當作字元資料來處理的。』\0』代表ascii為0的字元,ascii為0的字元不是乙個可以顯示的字元,而是乙個空操作符。故用它來做字串結束標誌。其不會產生附加的操作或增加有效字元,只是乙個供辨別的標誌。
//用字串常量來使字元陣列初始化
//可寫為
//等價為:
char c=;
//上面兩個陣列長度均為11,下面句子與上面不等價,且陣列長度為10
char c=;
//輸出陣列c中的字串
printf("%s\n",c);
printf遇到』0』停止輸出。
c語言中,字串陣列的輸入輸出可以有兩種方式。
1.逐個字元輸入輸出。用格式符」%c」輸入或輸出 乙個字元。
for(int i=0;i<6;i++)
printf("%c",c[i]);
2.將整個字串一次輸入或輸出。用」%s」格式符。如:
char c[ ]=;
printf("%s\n",c);
注意事項:
1.輸出字元中,不包括結束符『\0』;
2.用「%s」格式符輸出字串時,printf語句中的輸出項時字元陣列名,而不是陣列元素名,如下是不對的:printf(「%s」,c[0]);
3.如果乙個字元陣列中包含乙個以上』\0』,則,遇到第乙個』\0』就停止輸出
4.輸入乙個字串:scanf(」%s」,c);
scanf中輸入項c是已經定義的字元陣列名,輸入的字串應該短於已定於的字元陣列長度。
5.利用scanf輸入多個字串時,應該在輸入時以空格分隔。
char str1[5],str2[5],str3[5];
scanf("%s%s%s",str1,str2,str3);
c函式庫提供的專門處理字串的函式:
1.puts(字元陣列)
puts(str);
eg:char
str=;
puts(char);
輸出為:
china
beijing
2.gets(字元陣列)
eg:gets(str);
從鍵盤輸入:
computer回車
將輸入的字元computer給了str
注意
用puts或gets函式只能一次輸出或輸入乙個字串。
3.
strcat(字元陣列1,字元陣列2)
連線函式:把字串2連線到字串1後面,結果放到字元陣列1中,
函式呼叫後得到乙個函式值——字元陣列1的位址。
4.strcpy(字元陣列1,字串2)
將字串2複製到字元陣列1中。
char str1[10],str2="china";
strcpy(str1,str2);
//結果:str1狀態:china\0\0\0\0\0
可以用strncpy函式將字串2中前面n個字元複製到字元陣列1中。
strncpy(字元陣列1,字串2,n)
字元陣列,字元指標,Sizeof總結
1.以字串形式出現的,編譯器都會為該字串自動新增乙個0作為結束符,如在 中寫 abc 那麼編譯器幫你儲存的是 abc 0 2.abc 是常量嗎?答案是有時是,有時不是。不是常量的情況 abc 作為字元陣列初始值的時候就不是,如 char str abc 因為定義的是乙個字元陣列,所以就相當於定義了一...
字元陣列,字元指標,Sizeof總結
1.以字串形式出現的,編譯器都會為該字串自動新增乙個0作為結束符,如在 中寫 abc 那麼編譯器幫你儲存的是 abc 0 2.abc 是常量嗎?答案是有時是,有時不是。不是常量的情況 abc 作為字元陣列初始值的時候就不是,如 char str abc 因為定義的是乙個字元陣列,所以就相當於定義了一...
字元陣列,字元指標,Sizeof總結
1.以字串形式出現的,編譯器都會為該字串自動新增乙個0作為結束符,如在 中寫 abc 那麼編譯器幫你儲存的是 abc 0 2.abc 是常量嗎?答案是有時是,有時不是。不是常量的情況 abc 作為字元陣列初始值的時候就不是,如 char str abc 因為定義的是乙個字元陣列,所以就相當於定義了一...