c語言中字串的儲存方式記錄
一直以來,對於c中的字串儲存的形式模模糊糊的,所以經常會有越界的錯誤發生,
這幾天靜下心來,看了看基本c的參考書,現在記錄一下對於字串的儲存,方便自己以後回顧。例:…
char test[10];
scanf("%s", char);
這種情況下,如果輸入1234567890就會出錯了,為什麼呢?
換乙個輸入123456789試試看。
程式並沒有問題。
問題其實就在於c對於字串的儲存,對於字串的最後個儲存空間,必須保留乙個\0空字元,
也就是說char test[10],我們可以填充其中的9個字元,在最後一定要保留1乙個\0,但是這個
空字元我們並不要自己寫入,計算機會自己寫入。
符號常量使用情況也是這樣:
test符號常量,用strlen測試出長度為14,可是sizeof出的儲存大小是15,原因就是剛才提到的,
由於字元常量沒有新增\0,計算機會在末尾給他新增上空字元。
出於好奇,我還測試了下,如果手動加上空字元,情況會如何呢?
在剛才的test符號常量後加了個/0,結果很明顯,除了自己新增的\0,計算機仍然會再新增乙個
\0。
空字元與空格字元 NULL 空字串
在許多的程式語言內,空字串的標記為兩個雙引號 而null又有以下理解 1.字面理解,null就是無效的 無價值的 2.在程式設計中,變數以null結尾,表示其後沒有可用的資料,資料讀取在此結束。3.null在資料庫中表示不知道 unknown 的資料,主要有3種意思 a 知道資料存在,但不知道具體值...
空字串斷言
最近稍微研究了下正規表示式,在網上看了一篇正規表示式30分鐘入門教程.教程點這裡 30分鐘入門 在平衡組中講到 斷言一定匹配不成功.想了半天不明白.我是這麼理解 斷言的.a b 能夠匹配右邊不是b的a,那a 的意思就是匹配右邊什麼都沒有的a.然後我輸入了qwea發現不能匹配.感覺非常奇怪.糾結了2,...
判斷string字串為空字串
推薦str.isempty 1 str null 2 equals str 3 str.length 0 4 str.isempty 注意 length是屬性,一般集合類物件擁有的屬性,取得集合的大小。例如 陣列.length就是取得陣列的長度。length 是方法,一般字串類物件有該方法,也是取得...