У меня есть эта часть в программе
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, когда программа достигает этой части, он просто падает, и я понятия не имею, почему
Это ошибка «один за другим», потому что ваш массив имеет размер 5, а цикл выполняется 6 раз, что приводит к записи границ массива, что приводит к неопределенному поведению. Так и должно быть i<5
вместо i<6
,
Также избегайте выхода из цикла, манипулируя индексом цикла i
вместо этого вы могли бы использовать break
,
Других решений пока нет …