This is a program that encrypts & then decrypts a given string - there should be only 3 printed statements (plaintext, encrypted text & decrypted text)...(never mind it's not formatted to not overflow on the screen, I'll deal with that later)

Here's the problem:
I'm getting 5 printed statements & I can't see the reason why...
This may be something really obvious but I'm at a loss (first semester C prog student)

...if anybody can shed some light on this I would really appreciate it!

----------------------Here's my code-----------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXCHARS 200
#define MAXLINE 60

void decrypt(const char in[], char out[]);
void encrypt(const char in[], char out[]);
void printtext(const char t[]);
char scramble(const char c);
char unscramble(const char c);
void key(const char c, int n);

int main(void)
{
const char plaintext[] = "Fourscore and seven years ago our fathers \
brought forth upon this continent a new nation, conceived in liberty, \
and dedicated to the proposition that all men are created equal.";

char decrypttext[sizeof(plaintext)/sizeof(char)];
char encrypttext[sizeof(plaintext)/sizeof(char)];

printtext(plaintext); //print original text

encrypt(plaintext, encrypttext);
printtext(encrypttext); //print encrypted text

decrypt(encrypttext, decrypttext);
printtext(decrypttext); //print decrpyted text

//test to show plaintext == decrypttext
if(strcmp(decrypttext, encrypttext) == 0)
printf("Identical Strings\n");
else printf("Not Identical Strings\n");

return 0;
}

//translate plaintext to encrypttext
void encrypt(const char in[], char out[])
{
int k;
for(k = 0; in[k] != '\0'; k++)
{
scramble(in[k]);
strcpy(out, in);
}
printf("\n");
return;
}

//translate encrypttext to decrypttext
void decrypt(const char in[], char out[])
{

int k;
for(k = 0; in[k] != '\0'; k++)
{
unscramble(in[k]);
strcpy(out, in);
}
printf("\n");
return;
}

//translate a plain char to encrypted char
char scramble(const char c)
{
key(c, 4);
return c;
}

//translate encrypted char to a plain char
char unscramble(const char c)
{
key(c, 5);
return c;
}

//function for key
void key(const char c, int n)
{
if(n == 4)
{
switch(c)
{
case 'a': putchar(113); break;
case 'b': putchar(97); break;
case 'c': putchar(122); break;
case 'd': putchar(120); break;
case 'e': putchar(115); break;
case 'f': putchar(119); break;
case 'g': putchar(101); break;
case 'h': putchar(100); break;
case 'i': putchar(99); break;
case 'j': putchar(118); break;
case 'k': putchar(102); break;
case 'l': putchar(114); break;
case 'm': putchar(116); break;
case 'n': putchar(103); break;
case 'o': putchar(98); break;
case 'p': putchar(110); break;
case 'q': putchar(104); break;
case 'r': putchar(121); break;
case 's': putchar(117); break;
case 't': putchar(106); break;
case 'u': putchar(109); break;
case 'v': putchar(107); break;
case 'w': putchar(105); break;
case 'x': putchar(111); break;
case 'y': putchar(108); break;
case 'z': putchar(112); break;
case 'F': putchar(87); break;
default: putchar(' '); break;
}
}
else
{
switch(c)
{
case 'q': putchar(97); break;
case 'a': putchar(98); break;
case 'z': putchar(99); break;
case 'x': putchar(100); break;
case 's': putchar(101); break;
case 'w': putchar(102); break;
case 'e': putchar(103); break;
case 'd': putchar(104); break;
case 'c': putchar(105); break;
case 'v': putchar(106); break;
case 'u': putchar(107); break;
case 'j': putchar(108); break;
case 'm': putchar(109); break;
case 'k': putchar(110); break;
case 'f': putchar(111); break;
case 'r': putchar(112); break;
case 't': putchar(113); break;
case 'g': putchar(114); break;
case 'b': putchar(115); break;
case 'n': putchar(116); break;
case 'h': putchar(117); break;
case 'y': putchar(118); break;
case 'i': putchar(119); break;
case 'o': putchar(120); break;
case 'l': putchar(121); break;
case 'p': putchar(122); break;
case 'W': putchar(70); break;
default: putchar(" "); break;
}
}
}


void printtext(const char t[])
{
printf("%s\n", t);
return;
}