題目雖然說字元數在 1000 個以內,但是我卻在最後兩個測資點出現 "存取超過陣列範圍" 的錯誤
( C 是用字元陣列儲存字串)
我把陣列大小擴充到 3000 個就 AC 了,所以若是用 C 練習,請把陣列開大一點
題目雖然說字元數在 1000 個以內,但是我卻在最後兩個測資點出現 "存取超過陣列範圍" 的錯誤
( C 是用字元陣列儲存字串)
我把陣列大小擴充到 3000 個就 AC 了,所以若是用 C 練習,請把陣列開大一點
會存取超過陣列範圍,原因可能是因為測資裡真的有剛好 1000 個字元的字串。
而如果字元陣列的大小只開 1000 整的話,實際上是會發生錯誤的。
因為 C 的字元陣列的結尾會放一個特殊字元「'\0'」,用以表示字串的結尾。
可是因為 ’\0’ 本身也是個字元,所以也要佔陣列裡的一格位置。因此剛好會使大小為 1000 整的字元陣列,存放不下 1000 的想存放的字串內容。
因此,可以試試看把陣列大小設成 1001 。如果還是錯誤,表示有「可能」是題目的紕漏。
以上。
題目雖然說字元數在 1000 個以內,但是我卻在最後兩個測資點出現 "存取超過陣列範圍" 的錯誤
( C 是用字元陣列儲存字串)
我把陣列大小擴充到 3000 個就 AC 了,所以若是用 C 練習,請把陣列開大一點
會存取超過陣列範圍,原因可能是因為測資裡真的有剛好 1000 個字元的字串。
而如果字元陣列的大小只開 1000 整的話,實際上是會發生錯誤的。
因為 C 的字元陣列的結尾會放一個特殊字元「'\0'」,用以表示字串的結尾。
可是因為 ’\0’ 本身也是個字元,所以也要佔陣列裡的一格位置。因此剛好會使大小為 1000 整的字元陣列,存放不下 1000 的想存放的字串內容。
因此,可以試試看把陣列大小設成 1001 。如果還是錯誤,表示有「可能」是題目的紕漏。
以上。
我 WA 的測資點是最後 2 筆,當時我開了 1010 個字元吃了WA,所以字串應該不只 1009個字元
只要處理有關字串的題目,我都會習慣性再開大一些,題目說最多 1000個,我至少開到 1010個,甚至 1100、2000個
或許真的有測資與題目敘述不符的情形......
剛剛撈了一下測資,最大有2000個字元。
所以用字元陣列的話需要開到2001個。