關於字元陣列的問題,一個關於字元陣列的問題

2022-05-07 10:30:25 字數 737 閱讀 8734

1樓:

不是你輸入5個數時才出錯,而應該在你輸入第2個數時就出錯。你輸入到第5個才出錯是你的運氣好。因為你只定義了包含1個元素的陣列,卻要向裡輸送多個數字,除第1個有地方儲存並受**控制外,其他的雖然依次存入其後的單元,但並不受你的**控制,系統會隨時安排別的資料佔據這些隨後的單元。

你輸入到第5個數時出錯,就是因為這第5個單元已分配給「別人」用了,而前面3個沒有出錯是因為這3個單元還沒有分配給「別人」。這是由於c/c++不檢查陣列越界情況造成的,程式設計師必須避免這種情況。當你的輸入即便已越界,但沒有侵犯系統不允許改寫的單元時,就不報錯;侵犯了系統不允許改寫的單元時就要報錯中止;所以這種現象常有有時報錯,有時不報錯的情況……

2樓:匿名使用者

首先告訴你:你定義的陣列小了,產生了越界!!超出陣列長度後的結果是不確定的!

字串在定義的時候,一定要多定義一個有效資料長度,多的這一位留給字串結束符'\0'

怎樣區分字元陣列和字串?

如果你對字元陣列的操作是按字串方式使用時,你的字元陣列就是字串,這時要多一個'\0'位置才可以!如:puts gets strlen strcpy等都是字串操作函式。

char ch[1] ; //這樣定義的ch只有一個空間,所以,按字串操作時,只要輸入資料就會越界。

char ch[5]; 這時,可以輸入的有效資料為4個字元,當超過4個時,字串操作函式就會產生異常。

具體異常是和當前記憶體空間的使用情況有關。

c語言中關於字元陣列和字串的區別

陣列的長來度是固定的,源我們知道在哪個地方結束。對於c型別的字串,要想知道在那個地方結束的話,我們只需要檢測某個位置的字串是不是 0就行了,也就是說c型別的字串是以 0標記結束的。所以字元陣列和c型別字串的區別就是那個 0。其實從字元陣列和c型別字串的儲存位置上來說也是不同的,這也算是一個區別吧。結...

字元是多少,一個字元是多少?

1 1個字元是一個數字 2 1個字元是1個英文字母 3 1個字元是1個空格 4 1個字元是1個符號 不是全部符號都是一個字元 通常一個位元組是8位二進位制,表示一個英文字母,一個漢字佔2個位元組,1個漢字儲存需要2個字元等同於2個字元等於1個漢字。一個字元是由一個位元組 即8個二進位制位 來表示的,...

c怎麼將陣列分割為字串,c怎麼將一個陣列分割為字串

是字串分割陣列吧!如果有明顯的特徵就好辦!string s string useragent www 111111 3333332 s useragent.split new char 沒有明顯特徵,有擷取規律可以用擷取字串和for迴圈配合!string imei 1001100210031004 ...