#include<stdio.h>
#include<cs50.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
int main(int argc, string argv[])
{
if (argc > 2 || argc == 1)
{
printf("Please put appropriate cl arguement!\n");
return 1;
}
int k = strlen(argv[1]); // store string length of key in k
string j = argv[1]; // introduce string j to use individual characters of key later
string pt = get_string("plaintext: "); // prompt for plaintext
char ct[strlen(pt)]; // array of characters for ciphertext
for (int i = 0, h = 0; i < strlen(pt); i++) // loop to encipher and introduce h to skip the enciphering for non-alphabet chars
{
if (isupper(pt[i]) && isupper(j[(i - h)]))
{
int a = ((pt[i] - 65) + ((j[(i - h) % k] - 65))) % 26; // enciphering and ASCII to alphabetic index stored in a
ct[i] = 65 + a; // Alphabetic index to ASCII and stored in ith element of array ct
}
else if (isupper(pt[i]) && islower(j[(i - h)]))
{
int a = ((pt[i] - 65) + ((j[(i - h) % k] - 97))) % 26;
ct[i] = 65 + a;
}
else if (islower(pt[i]) && isupper(j[(i - h)]))
{
int a = ((pt[i] - 97) + ((j[(i - h) % k] - 65))) % 26;
ct[i] = 97 + a;
}
else if (islower(pt[i]) && islower(j[(i - h)]))
{
int a = ((pt[i] - 97) + ((j[(i - h) % k] - 97))) % 26;
ct[i] = 97 + a;
}
else
{
ct[i] = pt[i]; // no change when char is not alphabet
h = h + 1; // h stores number of non-aphabet characters before ith character
}
}
printf("ciphertext: %s\n", ct);
return 0;
}
When executing:
./vinegere bacon
plain text: Meet me at the park at eleven am
ciphertext: Negh ze at the park at eleven am
Please help.