Advertisement
ssoni

caesar1.c

Feb 16th, 2022
817
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.63 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <cs50.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <ctype.h>
  6.  
  7. int main(int argc, string argv[])
  8. {
  9.     if (argc != 2)
  10.     {
  11.         printf("USAGE: ./caesar NUM\n");
  12.         return 1;
  13.     }
  14.  
  15.     int offset=0;
  16.     offset = atoi(argv[1]);
  17.     offset = offset % 26;       //remove redundant offset multiples of 26
  18.     //printf("The shift is %i\n", offset);
  19.  
  20.     string plaintext;
  21.     plaintext = get_string("plaintext: ");
  22.  
  23.     int shift=0;
  24.     char newLetter;
  25.  
  26.     printf("ciphertext: ");
  27.    
  28.     //process each letter.
  29.     for (int i=0; i<strlen(plaintext); i++)
  30.     {
  31.         if (isupper(plaintext[i]) != 0)
  32.         {
  33.             shift = 64;
  34.             plaintext[i] = plaintext[i] - shift;    //scale letters back to to 1-26
  35.             plaintext[i] = plaintext[i] + offset;   //add offset cipher
  36.             plaintext[i] = plaintext[i] % 26;       //adjust if over 26
  37.             plaintext[i] = plaintext[i] + shift;    //scale letters back to to original range
  38.             printf("%c", plaintext[i]);
  39.         }
  40.         else if (islower(plaintext[i]) != 0)
  41.         {
  42.             shift = 96;
  43.             plaintext[i] = plaintext[i] - shift;    //scale letters back to to 1-26
  44.             plaintext[i] = plaintext[i] + offset;   //add offset cipher
  45.             plaintext[i] = plaintext[i] % 26;       //adjust if over 26
  46.             plaintext[i] = plaintext[i] + shift;    //scale letters back to to original range
  47.             printf("%c", plaintext[i]);
  48.         }
  49.         else
  50.         {
  51.             printf("%c", plaintext[i]);
  52.         }
  53.     }
  54.     printf("\n");
  55. }
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement