Давайте посмотрим на ваш код.
int input[8] = {0}; // (1)
int countM = 0;
while(countM < 9){
if(scanf("%d", &input[countM]) < 8) // (2)
...
}
В (1) вы определяете массив длины 8. В (2) у вас есть цикл while, который проходит через 9 целых чисел (от 0 до 8). Во время последнего запуска цикла у вас есть эквивалент
scanf("%d", &input[8] < 8)
, который выходит за границы массива. Вне границ будут драконы. Кроме того, сравнение < 8
не дает того, что вы хотите.
Если вы намереваетесь проверить границы, вы должны сделать это до того, как вы получите доступ или назначите эту часть массива.
Например:
while(countM < 9){
if (countM > 7)
{
// do whatever you want when this should happen
break;
}
// rest of code
}
Но, как вы видите, это немного странно. Вы знаете, что активируете этот код.
Вы можете добиться большего успеха с чем-то вроде
int val;
int countM = 0;
while (scanf("%d", &val) == 1)
{
if (countM > 7)
{
printf("Whoops");
// whatever you want
exit(1);
}
// rest of code
}