So the idea of this is fine, I guess.
> char key[100];
Here you declare key as an array and it's empty.
> k = 'A' + (c - key);
Then you start using the array name of the key to decrypt
> key[c] = k;
And also store the plaintext somewhere in the key?
And you do similar things when you encrypt:
> k = key + (c + key - 2 * 'A');
In pretty much all of these cases, you probably only intended to use part of the key in a loop, which right now, it doesn't look like you're attempting to do at all.
Also you really need to separate plaintext, key, and ciphertext. Each of these things need their own array, perhaps even of the same size (to start with). You cannot store plaintext in the key array without overwriting part of the key.