Ответ на вопрос
В функции check
вы инициализировали внутренний l oop как int j = i
. Следовательно, на первой итерации всегда будет истинным key[i] == key[j]
. Затем 1
возвращается из check
и предотвращает печать приглашения функцией main
. Инициализация должна быть int j = i + 1
.
Другие ошибки
Во-первых, делать int keyL = strlen(key);
перед проверкой c
плохо, потому что key
(argv[1]
) может быть NULL
когда c
(argc
) меньше 2
.
Во-вторых, printf("ciphertext: %s\n", ctext);
в этом коде вызовет неопределенное поведение , потому что то, что хранится в ctext
, является не завершается NUL. char ctext[len];
должно быть char ctext[len+1];
и ctext[len]='\0';
должно быть добавлено перед printf("ciphertext: %s\n", ctext);
.