• Как исправить ошибку?

    У вас классическое переполнение стекового буфера (stack buffer overflow aka buffer overrun).
    https://en.wikipedia.org/wiki/Stack_buffer_overflow

    Вы не проверяете результат fopen и fscanf() и не контролируете длину данных, считываемых в буфер word фиксированного размера. В данном случае либо fscanf ничего не может считать, и в cryption() вы пытаетесь шифровать мусор, который не заканчивается нулевым байтом, что приводит к переполнению буфера word либо считывается более 10 байт, из-за чего переполняется буфер word. Поскольку буфер объявлен в локальных переменных функции, это приводит к повреждению стека.

    Всегда контролируйте возврат из функции (fopen(), scanf(), fscanf(), malloc() в вашем случае) + ограничьте размер вводимой строки размером буфера через форматный спецификатор ("%9s" например)
    Ответ написан
    Комментировать
  • Как организовать ввод кода в консоль?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Когда gets() или scanf() встречают символ \n они завершают ввод.
    Откройте для себя циклы.

    Программу желательно бы на Си, но можно и на плюсах
    С такими вопросами - на Фрилансим
    Ответ написан
    4 комментария