I'm writing a program to 'encrypt' an inputted string of text by using a switch statement to correlate the given character with a symbol, and output that symbol in the place of the character. I put it in a while loop, the idea being that it would loop the full switch function each time until the received character is EOF. On a guess, I believe it is looping through just the first character, because I don't advance the getchar() statement, but I'm not sure how to do that so any help would be greatly appreciated. I say this because if I use return instead of break, it closes the while loop and only takes that first letter, if I use a break then it spams the first 'encrypted' char.
#include <stdlib.h>
#include <stdio.h>
/* C program to encrypt a given text message, assuming all lowercase */
int main() {
    int Input, Encrypted;
    printf("Please type your message\n");
    Input = getchar();
    while (Input != EOF) {
        switch (Input) {
        case 'a':printf("!"); break;
        case 'b':printf("@"); break;
        case 'c':printf("#"); break;
        case 'd':printf("$"); break;
        case 'e':printf("%"); break;
        case 'f':printf("^"); break;
        case 'g':printf("&"); break;
        case 'h':printf("*"); break;
        case 'i':printf("`"); break;
        case 'j':printf("~"); break;
        case 'k':printf("-"); break;
        case 'l':printf("_"); break;
        case 'm':printf("="); break;
        case 'n':printf("+"); break;
        case 'o':printf("["); break;
        case 'p':printf("{"); break;
        case 'q':printf("]"); break;
        case 'r':printf("}"); break;
        case 's':printf(";"); break;
        case 't':printf(":"); break;
        case 'u':printf("|"); break;
        case 'v':printf(","); break;
        case 'w':printf("<"); break;
        case 'x':printf("."); break;
        case 'y':printf(">"); break;
        case 'z':printf("'");break;
        return 0;
        }
    }
    return 0;
}
 
     
    