C語言字串初始化與操作
C語言中字元一般是單引號,而字串是雙引號,且字串是以NULL(\0)結尾的零個或多個字元序列。C中沒有字串這個資料型別的,只能通字元陣列或者字元指標來儲存字串變數。下面具體看看C中字串怎麼實現和操作
1.字元陣列的定義與初始化
char str[]={" hello world!"} ;
也可以去掉花括號
char str[]=" hello world!" ;
這兩種是在定義的時候直接用字串常量賦值,
也可以單個賦值 : char str[ ]={'H','e','l','l','o'};
但要注意的是,前面兩個字串末尾都有結束符'\0',而字元陣列需要自己新增'\0',不然它就不是一個字串,只是一個普通的字元陣列。
舉個例子:char str1[]={" hello”} ; char str2[ ]={'H','e','l','l','o'}; sizeof(str1)=6 ,sizeof(str2)=5 多的就是結束符長度!
所以char str[ ]={'H','e','l','l','o','\0'};這樣來初始化一個字串最好。但是當 char str[10]={'H','e','l','l','o'},後面的字元會自動賦值為'\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)