簡體   English   中英

這是傳輸結束的角色還是其他什么?

[英]Is this End of Transmission character or something else?

所以我正在用標准C做一個字符串基礎教程。

我有:

char mystring[] = "HAL";
for (int i = 0; i < 3; i++) 
    mystring[i] += 1;
for (int k = 0; k < 10; k++)
    printf("\n %d", mystring[k]);

哪個輸出:

73
66
77
0
4
0
0
0
0
0

現在mystring [3] = 0對我有意義,因為我讀到字符串文字以空字符結尾,所以字節數是n + 1個字符。 我不知道為什么mystring [4] = 4。 我在ascii表中看了4,它說它是“傳輸結束”。 我在C字符串的傳輸字符末尾做了一些快速谷歌搜索,但沒有找到任何東西。 那么有人會告訴我這里發生了什么事嗎? 這是標准的事嗎? 我什么時候能指望它發生?

你正在訪問越界內存 真的不知道它里面有什么。 可能有任何東西,從你發現的4 ,到只有0雷霆貓惡魔可能從你的鼻子出來

根據C標准定義,訪問越界內存是未定義行為


你可能會感興趣

訪問數組邊界之外是未定義的行為

一旦超過第一個\\ 0,C就不會定義緩沖區的內容。 基本上,你從上次使用內存區域獲得了內存中留下的任何內容,並且它在你的上下文中沒有任何意義。

該行分配4個字節的內存。 下面數組中的3加上看不見的字符串終結符'\\0'

char mystring[] = "HAL";

數組索引從0 ,因此mystring[2]'L'mystring[3]'\\0'

進一步索引是未定義的行為,因此沒有人可以解釋你得到的值4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM