Почему этот стек битье и я это исправить?

Цель этой программы заключается, чтобы определить, если число между 1 и 1000 простым путем испытания ее дробимости в первые 11 простые числа. Программа нормально работает с большинством входов. Однако, когда я ввожу целое число, например, 468, разбив стек обнаружено. Что такое стек битьем и как устранить проблему?

Я пытался исследовать разбив стек, но я не могу найти конкретные примеры, которые относятся к моей программе. Я не знаю альтернативных способов я мог бы попытаться изменить программу, так как я относительно новый для программирования с С.

char divStatement[] = " is divisible by ";

if ((userInput %% 31) == 0) {
    div31 = true;
    strcat(divStatement, "31, ");
}

if (div2 || div3 || div5 || div7 || div11 || div13 || div17 || div19 || div23 || div29 || div31) {
        divStatement[strlen(divStatement) - 2] = '.';
        divStatement[strlen(divStatement) - 1] = '\n';
        printf("%%d%%s", userInput, divStatement);
        printf("%%d is not prime.\n", userInput);
}
else {
        printf("%%d is prime.\n", userInput);
}

Выход на самом деле работает правильно. В конце программы, однако, терминал выводит: *стек разбив обнаружены *: ./а.завершенных Несформированность

0
2019-09-19 18:30:48
источник

Посмотрите другие вопросы по меткам