C字符串是空終止的,這意味着在char陣列中,索引爲strlen()
的字符是一個字節,其所有位都設置爲0.我看過代碼,而不是'\0'
,使用整數0
。但是自從sizeof(int) > sizeof(char)
以來,這可能實際上超出了爲陣列分配的空間 - 我錯了嗎?或者在這種情況下,編譯器是否隱式投射int
到char
?使用0而不是' 0'終止一個c字符串是錯誤的嗎?
3
A
回答
10
是的你錯了 - 零值將被截斷。畢竟,如果你寫:
char c = 0;
你不會指望編譯器寫超出變量c的範圍,我希望。如果你寫這樣的東西:
char c = 12345;
然後編譯器應該警告你的截斷。 GCC產生:
c.c:2: warning: overflow in implicit constant conversion
但仍然沒有什麼會被寫入變量的界限之外。
13
將值0
存儲在char
s的數組中時,int將隱式轉換爲char。
其實,'\0'
類型是int
(相反的是人們可以預期),所以somechararray[x]=0
和somechararray[x]='\0'
語義等價。
就我個人而言,我更喜歡用'\0'
來更清楚地說明我正在處理一個字符串。
相關問題
- 1. 空終止字符串:使用'\ 0'還是隻有0?
- 2. file_put_contents添加「0」而不是字符串
- 3. 我收到錯誤信息:表達式:(L「字符串不是空終止」&&0)
- 4. 元帥非0終止字符串
- 5. 如何確定一個空字符串時,它的內容是\ 0 \ 0 \ 0 \ 0
- 6. C字符串空終止字符\ 0修改
- 7. 使用字符串連接顯示0而不是null
- 8. 返回 「批准」 列的值 「是\ 0 \ 0 \ 0 \ 0 \ 0 \ 0」,而不是 「是」
- 9. 使用.zero?而不是== 0?
- 10. 第一個數字是始終爲0
- 11. 消息傳輸不是0終止
- 12. 如何在JavaScript中匹配0和空字符串,但不是0和undefined,而不是0和null?
- 13. 0終止它後打印C字符串
- 14. 幫助在C#中終止字符串0#
- 15. 確定一個字符串是否爲空/空並且是一個數字而不是0?
- 16. 在C中終止一個字符串
- 17. C++ _bstr_t而不是使用字符串
- 18. 我乘以0而不是0 !!!! Python的
- 19. 如何將字符串中的ascii值存儲爲0而不終止它?
- 20. MYSQL - 空字符串== 0問題(更新主鍵0而不是插入行)
- 21. 爲什麼0.ToString(「#。##」)返回空字符串而不是0.00或至少爲0?
- 22. 是(string.length,0)是字符串的有效範圍嗎?
- 23. 爲什麼$'\ 0'或$'\ x0'是一個空字符串?應該是空字符,不是嗎?
- 24. C#停止用戶輸入一個字符/字符串,而不是整數
- 25. 我總是收到一個未終止的字符串文字錯誤
- 26. 比較字符串(來自其他索引而不是0)
- 27. Rails從模型中保存0而不是字符串collection_select
- 28. CodeIgniter把0而不是字符串值到數據庫
- 29. Wy做NSUserDefaults objectForKey方法,返回一個字符串「0」而不是零?
- 30. COUT打印「-0」,而不是「0」