陣列越界問題

2021-07-23 08:56:34 字數 565 閱讀 2476

今天遇到了乙個問題:輸入一行文字,找出其中的大寫字母,小寫字母,空格,數字以及其他字元各有多少?(要求用指標變數)

我的答案:

#include void main()

int st(char *t,int o)

else if (*(t+n)>=97&&*(t+n)<=122)

else if (*(t+n)>=48&&*(t+n)<=57)

else if (*(t+n)==32)

else

n++;

} switch (o)

case 1:

case 2:

case 3:

case 4:

}}

可以看出,定義字元陣列a長度只有10個位元組,並將位址賦給指標變數c,但在實際執行中,輸入字元超過10時,程式仍能正常執行,並不會報錯。實際查閱資料發現,這樣的做法是不可取的,字元個數超過10時,其後的字元並不是安全的,可能會覆蓋原有有效資料,造成程式出錯,以後應加以注意。但是問題是,題目要求字串的長度並不確定,可見這個方法還是有缺陷的,等到看完後面的鍊錶再來補充。

陣列越界問題

c陣列越界問題 2010 07 23 22 23 include stdio.h define len 10 int main return 0 問題 為什麼輸入11個字元越界了都不會出錯?但是輸入13個字元卻出現錯誤?補充答案 在c語言中,很容易出現陣列越界問題。上面程式中定義了長度為10的int...

陣列越界問題

首先一點是明白陣列是有固定的大小的,然後是陣列的下標是從0開始到定義的陣列size 1。陣列越界常發生在非法索引訪問陣列,非法是指索引值為負值或大於等於陣列大小,這裡最常迷惑人的是大於等於陣列大小。首先,因為在往陣列中插入資料時,陣列此時的大小是等於陣列中資料長度的,並不是你之前的規定的值。那之前規...

關於陣列的越界問題

華清遠見嵌入式學院講師。關於陣列的越界問題由來已久,大部分人比較困惑的地方是在申請記憶體空間時。下面先來看乙個例子 在這個例子中呢,陣列buf申請了10個空間,資料通過標準輸入存到buf中,然後列印出buf中的內容。編譯 執行。第一次輸入,我輸入9個數 可以正確輸出,沒有問題。但是,當我輸入10個數...