字元陣列總結

2021-08-27 03:46:29 字數 1833 閱讀 2784

字元型資料是以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 因為定義的是乙個字元陣列,所以就相當於定義了一...