Last active
December 14, 2015 15:59
-
-
Save haup/5111743 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <stdbool.h> | |
typedef char* string; | |
string encrypt(int offset, string text); | |
string decrypt(int offset, string text); | |
bool gueltige_variablen(string variable); | |
void help(); | |
int main(int argc, char* argv[]) | |
{ | |
if (argc < 4 || !gueltige_variablen(argv[1])) { | |
help(); | |
return 1; | |
} | |
string text; | |
for (int i = 3; i < argc; ++i) | |
{ | |
if (strcmp(argv[1], "-e") == 0) | |
text = encrypt(atoi(argv[2]), argv[i]); | |
else if (strcmp(argv[1], "-d") == 0) | |
text = decrypt(atoi(argv[2]), argv[i]); | |
//else if (strcmp(argv[1], "help") == 0); | |
// help(); | |
printf("%s ", text); | |
free(text); | |
} | |
putchar('\n'); | |
} | |
string decrypt(int offset, string text) | |
{ | |
return encrypt(offset * (-1), text); | |
} | |
string encrypt(int offset, string text) | |
{ | |
int text_len = strlen(text); | |
string encrypted_text = malloc(sizeof(char) * text_len + 1); | |
strcpy(encrypted_text, text); | |
for (int i = 0; i < text_len; ++i) | |
{ | |
int tmp = (int) encrypted_text[i]; | |
if (tmp >= 65 && tmp <= 90) //UPPERCASE | |
encrypted_text[i] = (char)((tmp - 65 + offset + 26) % 26 + 65); | |
else if (tmp >= 97 && tmp <= 122) //lowercase | |
encrypted_text[i] = (char)((tmp - 97 + offset + 26) % 26 + 97); | |
} | |
encrypted_text[text_len] = '\0'; | |
return encrypted_text; | |
} | |
void help() { | |
printf("%s\n", "Help:\n\nSyntax: 'caesar -d|-e [offset] [string]'"); | |
} | |
bool gueltige_variablen(string variable) { | |
string variablen[2] = {"-e", "-d"}; // Arraylänge = Anzahl der Variablen + 1 | |
int variablen_laenge = sizeof(variablen) / sizeof(variablen[0]); | |
int ret = false; | |
for (int i = 0; i < variablen_laenge ; i++) | |
{ | |
if (strcmp(variablen[i], variable) == 0) { | |
ret = true; | |
printf("%d\n",(int) ret); | |
return ret; | |
} | |
} | |
printf("%d\n",(int) ret ); | |
return ret; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment