I'm trying to create a cipher that eventually will read an entire .dat file then re-write it encrypted and as of now I am using code blocks. Right now I’m just working on being able to do it one word at a time, but I get a really big error when I try to decrypt the word. The word is decrypted and printed then my computer starts to make a long beep sound and prints lines and lines of jargon. The program works fine until the end when I try to decrypt the word. I’ve only started programming about 4 months ago, so any help/advice will be greatly appreciated.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
//function prototype
void encrypt (char [], int);
void decrypt (char [], int);
int main (void)
{
char myString[21] = {0};
int iSelection = 0;
int iRand;
srand(time(NULL));
iRand = (rand() % 4) + 1; //random#, 1-4
printf("\n\n1 Encrypt Text");
printf("\n2 Decrypt Cipher Text");
printf("\n3 Generate New Key");
printf("\n4 Quit");
printf("\n\n\nSelection a Cryptography Option: ");
scanf("%d", &iSelection);
switch (iSelection){
case 1:
printf("\nEnter one word to encrypt: ");
scanf("%s", myString);
encrypt(myString, iRand);
break;
case 2:
printf("\nEnter cipher text to decrypt: ");
scanf("%s", myString);
decrypt(myString, iRand);
break;
case 3:
iRand = (rand() % 4) + 1; //random#, 1-4
printf("\nNew Key Generated\n");
break;
case 4:
printf ("FAILED");
} //end switch
return 0;
}//end main
//functions
void encrypt(char sMessage[], int random){
int x = 0;
//encrypt the message by shifting characters
while(sMessage[x]){
sMessage[x] += random;
x++;
}//end loop
x = 0;
printf("\nEncrypted Message is: ");
//print the encrypted message
while(sMessage[x]){
printf("%c", sMessage[x]);
x++;
}//end loop
}//end encrypt function
void decrypt(char sMessage[], int random){
int x = 0;
x = 0;
//decrypt the message by shifting the letters
while(sMessage[x]){
sMessage[x] = sMessage[x] - random;
x++;
}//end loop
x = 0;
printf ("\nDecrypted Message is: ");
//print the decrypted message
while("sMessage[x]"){
printf("%c", sMessage[x]);
x++;
}//end loop
}//end decrypt funcion
I attached a file showing what the problem is. This is my first post so I hope it worked..