C語言字串初始化與操作

2021-07-16 00:06:37 字數 1878 閱讀 4340

c語言中字元一般是單引號,而字串是雙引號,且字串是以null(\0)結尾的零個或多個字串行。c中沒有字串這個資料型別的,只能通字元陣列或者字元指標來儲存字串變數。下面具體看看c中字串怎麼實現和操作

1.字元陣列的定義與初始化

char  str= ;

也可以去掉花括號   

char  str=" hello world!"   ;   

這兩種是在定義的時候直接用字串常量賦值,

也可以單個賦值 :char  str[ ]=;

但要注意的是,前面兩個字串末尾都有結束符'\0',而字元陣列需要自己新增'\0',不然它就不是乙個字串,只是乙個普通的字元陣列。

舉個例子:char  str1= ;  char  str2[ ]=;   sizeof(str1)=6 ,sizeof(str2)=5 多的就是結束符長度!

所以char  str[ ]=;這樣來初始化乙個字串最好。但是當 char str[10]=,後面的字元會自動賦值為'\0'的。 c

字串定義時可以用"="號進行初始化,但是以後不能用"="對c字串進行賦值。上面的三個初始化都是用「=」初始化的,但下面就是錯誤:

char  str[20];

str=" hello world!"   ;  //賦值錯誤

所以初始化之後可以單個賦值,利用下標,比如char  str[20];  str[0]='a' ;

對c字串的操作需要通過"string"檔案中定義的字串處理函式,strlen,strcpy,strcat 等。比如利用strcpy 賦值:

char  str[20];  strcpy(str,"hello");

2. 使用字元指標來訪問乙個字串,通過字元指標指向存放字串陣列的首元素位址來進行訪問.

char * a ="hello!" ;

但在這可以:

char * a ;

a="hello!" ; //正確

注意:這裡只是用字元指標指向乙個字串,它依然是用字元陣列儲存的,這裡只是把字串首位址賦值給a!

這裡是乙個字串常量,所以只能讀,不能寫

char c =a[0];   //正確

a[0]='a';     //錯誤

3. 字串的輸出

char  str=" hello!"  ;   

char * str="hello!" ;

都可以用:

printf("%s",str);  來輸出  整個字串 hello!

注意:

printf("%s",*str);   輸出的是字串的第乙個元素(h)

4.字串處理函式

strlen,strcpy,strcat 

分別是:

求字串長度(去掉了『\0』);複製字串;連線第二個字串到第乙個末尾(第乙個的\0會去掉,最後末尾加乙個\0)

c語言字串初始化 C 字串

c 提供了以下兩種型別的字串表示形式 c 風格的字串起源於 c 語言,並在 c 中繼續得到支援。字串實際上是使用null字元 0 終止的一維字元陣列。因此,乙個以 null 結尾的字串,包含了組成字串的字元。下面的宣告和初始化建立了乙個 hello 字串。由於在陣列的末尾儲存了空字元,所以字元陣列的...

C 列表初始化,字串初始化

列表初始化 int a 0 int a 全面應用 int a int a 0 預設初始化 定義變數時,沒有指定初值,則變數被預設初始化。定義函式體外的變數被初始化為0,函式體內部的內建型別變數不被初始化。字串初始化 string s1 string s2 s1 string s2 s1 string...

C語言字串初始化錯誤

在寫指標陣列題目時,遇到數字轉換問題。問題如下 將大於0小於1000的阿拉伯數字轉換為羅馬數字。表示個位數 i,ii,iii,iv,v,vi,vii,viii,ix 表示十位數 x,xx,xl,l,lx,lxx,l xc 表示百位數 c,cc,ccc,cd,d,dc,dcc,dccc,cm 我選擇了...