Skip to content

Instantly share code, notes, and snippets.

@haup
Last active December 14, 2015 15:59
Show Gist options
  • Save haup/5111743 to your computer and use it in GitHub Desktop.
Save haup/5111743 to your computer and use it in GitHub Desktop.
#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