Vigenere cipher C program
Bug: no null character
printf(&quot;%s\n&quot;, result); fails as result does not point to a string.  That data lacks a null character and is short, by 1 of allocated memory needed.
// char *output = malloc(output_len);
char *output = malloc(output_len +1);
output[output_len] = '\0';

Similar problem with decryptor.
No protection against non-A-Z characters
I'd expect only encrypting/decrypting when the input[] is an A-Z.
I suspect code may generate output[i] == 0 for select inputs, rendering the string short.

Pedantic bug: Negative char
When input[i] &lt; 0, isupper(input[i]) is UB.  Better to access the string via an unsigned char * for is...().
A negative char value also messes-up mod().  When x &lt; 0, x % n code does not perform a Euclidean mod.