C ++ программа закрывается в Windows, сравнивая символ с массивом

У меня есть эта часть в программе

    char size_input[5]={'1','0','4','-'};
for (int i=0;i<6;i++){
cin >> size_input[i];
if(size_input[i]!=char(45)){
valid_size_characters++;
}else{
i=6;
}
}

Он компилируется без ошибок как в Windows, так и в Linux, но в Windows, когда программа достигает этой части, он просто падает, и я понятия не имею, почему

-1

Решение

Это ошибка «один за другим», потому что ваш массив имеет размер 5, а цикл выполняется 6 раз, что приводит к записи границ массива, что приводит к неопределенному поведению. Так и должно быть i<5 вместо i<6,

Также избегайте выхода из цикла, манипулируя индексом цикла iвместо этого вы могли бы использовать break,

2

Другие решения

Других решений пока нет …