字串賦值的幾種辦法分類及常見錯誤總結

2021-10-09 11:39:03 字數 1269 閱讀 3295

字串的輸入與賦值是非常容易搞混淆的一塊,這裡總結一下順序儲存的字串輸入方式:

一、棧內靜態儲存

1.定義時用字串賦值

char s[15]

="helloworld"

;

不能先定義,然後賦值,如:

char s[10];

s = 「helloworld」;

原因是s是指向乙個棧區陣列首元素的指標,不能給指標賦上字串。

注意!c語言中字串以字元 『\0』 結尾,所以實際上上述陣列儲存的是:h,e,l,l,o,w,o,r,l,d,\0。看到的有10個字元,實際上還加上乙個結尾 \0 表示串的終結,長度為11 。

若定義的陣列時s[10],列印出來會在helloword後新增若干亂碼,而且每次亂的都不一樣。就是因為沒讀到終結符 \0 。

2.對陣列中的字元逐個賦值

char s[15]

=;

3.使用strcpy()函式

char s[15]

;strcpy

(a,"helloworld"

);

4.從終端讀入字串

scanf:

char s[15]

;scanf

("%s"

, s)

;

這裡的s是讀入的整個一行,遇到空白字元,包括空格,製表符,換行符時會停止輸入。

gets:

char s[15]

;gets

(s);

s同樣代表一行,但是只在遇到換行符的時候停止讀入。

二、堆中動態分配

和棧中類似,宣告時有區別,其他都類似,因為不論堆還是棧,本質上還是順序儲存。

char

* s =

(char*)

malloc

(sizeof

(char)*

15);strcpy

(s,"helloworld"

);

強調一下,這裡同樣不允許這種賦值方式:

char* s = (char*)malloc(sizeof(char) * 15);

s = 「helloworld」;

因為本質上字串還是存在陣列中,s是指向陣列首元素的指標。就算是*s也是指該陣列的第乙個元素s[0]。

字串的幾種常見的反轉

提到字串的反轉,最先想到的應該是stringbuiler的reverse 的方法,方便快捷。但有時我們也需要自己寫一些反轉的 第一種 通過string類的charat 的方法來獲取字串中的每乙個字元,然後將其拼接為乙個新的字串。該方法是通過charat 方法獲得每乙個char的字元,i 0時獲得第乙...

python中幾種常見的字串

字串中的count操作可以計數字串中出現某個字元的次數,可以查詢整個字串,也可以查詢字串的某個區域 center是把字串居中,預設是填充空格,也可以填充任何字元 查詢某個或者某串字元是否在字串中,如果在則返回該字串的索引值,如果不在則返回 1,可以進行全字串查詢,也可以按區域來查詢 判斷輸入的字串是...

字串的賦值

字串表示方法 char str 20 char ch 賦值操作 1 定義的時候賦值 char str 20 what pity char ch how are you 2 用字串複製函式 strcpy str,what pity 但是對於用指標表示的字串變數用複製函式賦值會出現問題,需要先申請記憶體...