在c語言中,字串是當做字元陣列來處理的;所以字串有兩種宣告方式,一種是字元陣列,一種是字元指標。
char parr = "zifuchuanshuzu";
char charr = ;
這是字元陣列初始化的兩種方式,但是這兩種方式其實是不等價的;他們的陣列長度不同。
#include
int main() ;
//等價於charr
char charr_test = ;
int num_parr = sizeof(parr);
int num_charr = sizeof(charr);
int num_charr_test = sizeof(charr_test);
printf("the parr is : %s\n", parr);
printf("the size of parr is : %d\n\n", num_parr);
//與charr不等價
printf("the charr is : %s\n", charr);
printf("the size of charr is : %d\n\n", num_charr);
//等價於charr
printf("the charr_test is : %s\n", charr_test);
printf("the size of charr_test is : %d\n", num_charr_test);
return
0;}
執行結果如圖:
從結果可以看到第二種初始化方式,列印的結果有問題,但是字元數量沒有問題。這是因為字串預設是以』\0』結束的,第二種初始化方式中沒有』\0』,而我們以字串方式列印,所以出錯;
第一種第一方式是系統自動新增了』\0』;我們可以看到其字元數量是15(與第三種相同)。
下面的初始化方式是錯誤的
char parr[15];
parr="zifuchuanshuzu";
錯誤的原因:
c語言並沒有提供可以直接操作字串的運算子;「=」可以用於其他資料型別的賦值,但是不可以直接給字串賦值。
char *strcpy(char *dest,const
char*src);
字元陣列dest必須是陣列名形式,src可以是陣列名也可以是字串常量
可以用strcpy將src的前若干個字元複製到字元陣列中
char *strcat(char *dest,const
char *src);
標頭檔案:string.h
功能:
把src中的內容複製到dest結尾處(覆蓋』\0』)。
注:
src和dest記憶體區域不可以重疊,dest必須有足夠的空間來容納src;
字元陣列dest必須是陣列名形式,src可以是陣列名也可以是字串常量;
返回指向dest的指標;
#include
#include
int main()
在c語言中我們也可以使用字元指標來儲存字串。
char* str="zifuchuanshuzu";
printf("%s\n",str);
系統首先輸出str指向的字元,而後自加1,直至遇到』\0』;與陣列的輸出方式相同。
char *str;
str="zifuzhizhen";
對於字元指標這種賦值方式是正確的。與字元陣列不同。 C語言中字元陣列的初始化與賦值,字串相關函式!
在c語言中,字串是當做字元陣列來處理的 所以字串有兩種宣告方式,一種是字元陣列,一種是字元指標。1 直接逐個初始化字元陣列 字元陣列的初始化,最容易理解的方式就是逐個字元賦給陣列中各元素。char str 10 注意 如果花括號中提供的字元個數大於陣列長度,則按語法錯誤處理 若小於陣列長度,則只將這...
字元陣列初始化與賦值
char a 10 怎麼給這個陣列賦值呢?1 定義的時候直接用字串賦值 char a 10 hello 注意 不能先定義再給它賦值,如char a 10 a 10 hello 這樣是錯誤的!2 對陣列中字元逐個賦值 char a 10 3 利用strcpy char a 10 strcpy a,he...
陣列的初始化與賦值
以乙個整型陣列和乙個char型陣列為例 int a 2 char s 5 這樣初始化時可以的,使用cout輸出s陣列的時候,不報錯,但直接使用s這個陣列名輸出缺少了乙個適當的 0 結尾 對比上面的初始化,只能對陣列的元素賦值,而不能用賦值語句對整個陣列賦值 c 程式設計 譚浩強 149頁 例如下面是...