Это должно быть <
, а не <=
. Индексы на основе нуля для массива варьируются от 0 до length - 1
.
Обновление
Кто-то в аспирантуре научил меня создавать подобные ментальные паттерны и использовать их; вы будете избегать ошибок Это то, что любой массив в C-подобном языке всегда ищется как
for(index = 0; index < array.length ; index++)
Обучившись этому на протяжении многих лет, я увидел эту ошибку буквально с первого взгляда, именно так я и оказался во главе линии.
Вот еще несколько примеров для C:
char aString[MAXLENTH]; // declare a string array
char * aString ;
aString = (char *) malloc(MAXLENGTH]; // or malloc it
// constructing a string with catenation
aString[0] = '\0'; // now either way this is guaranteed an empty string
Но, конечно, я должен был использовать другой шаблон:
if((aString = (char *) malloc(MAXLENGTH) == NULL){
// report out of memory
exit(BAD);
}
Подумайте, какие еще шаблоны могут быть хорошими.