Compare commits
7 Commits
4c9614342e
...
bb0a1a5eef
Author | SHA1 | Date | |
---|---|---|---|
bb0a1a5eef | |||
1fde10d2f5 | |||
236dbce306 | |||
4ba0eab83e | |||
51cd993b61 | |||
738bd9a99c | |||
7fe3d3c107 |
@ -13,8 +13,6 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
@ -29,11 +27,13 @@ int main()
|
|||||||
fgets(buf, 3, stdin);
|
fgets(buf, 3, stdin);
|
||||||
int choice = strtol(buf, NULL, 10);
|
int choice = strtol(buf, NULL, 10);
|
||||||
|
|
||||||
//char* msg = calloc(128, sizeof(char));
|
|
||||||
|
|
||||||
fputs("Enter your message text: ", stdout);
|
fputs("Enter your message text: ", stdout);
|
||||||
//if (msg) fgets(msg, 128, stdin);
|
|
||||||
char* msg = dyninput_str(INT64_MAX);
|
char* msg = dyninput_str(INT64_MAX);
|
||||||
|
if (!msg)
|
||||||
|
{
|
||||||
|
puts("ERROR: String input failed! Exiting...");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
fputs("Enter your key (shift value): ", stdout);
|
fputs("Enter your key (shift value): ", stdout);
|
||||||
fgets(buf, 4, stdin);
|
fgets(buf, 4, stdin);
|
||||||
|
11
src/crypt.c
11
src/crypt.c
@ -12,6 +12,12 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For built in C mod operator (%) -1 % 26 == -1
|
||||||
|
* For the requirements of this algorithm -1 mod 26 == 25 is required
|
||||||
|
* The below functions accomplish this
|
||||||
|
*/
|
||||||
|
|
||||||
// Which of the two below functions is faster (find out!)
|
// Which of the two below functions is faster (find out!)
|
||||||
inline int mod(int a, int b)
|
inline int mod(int a, int b)
|
||||||
{
|
{
|
||||||
@ -26,6 +32,11 @@ inline int fast_mod(int a, int b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 65 - 90 = ASCII 'A' - 'Z'
|
||||||
|
* 97 - 122 = ASCII 'a' - 'z'
|
||||||
|
*/
|
||||||
|
|
||||||
inline bool isupper(char c)
|
inline bool isupper(char c)
|
||||||
{
|
{
|
||||||
return c >= 'A' && c <= 'Z';
|
return c >= 'A' && c <= 'Z';
|
||||||
|
@ -15,33 +15,44 @@
|
|||||||
|
|
||||||
char* dyninput_str(int_least64_t maxsize)
|
char* dyninput_str(int_least64_t maxsize)
|
||||||
{
|
{
|
||||||
char* str = malloc(3 * sizeof(char));
|
char* str = malloc(3 * sizeof(char));
|
||||||
/*if (!str)
|
if (!str)
|
||||||
puts("Error allocating memory!");
|
{
|
||||||
return NULL;*/
|
puts("\nError allocating memory!");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
int_least64_t size = 3, i = 0;
|
int_least64_t size = 3, i = 0;
|
||||||
char c = 0;
|
char c = 0;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
c = getchar();
|
if (size == maxsize)
|
||||||
if (i + 2 == size)
|
{
|
||||||
{
|
printf("Character limit of %lld reached!\n", maxsize);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
c = (char)getchar();
|
||||||
|
if (i + 1 == size)
|
||||||
|
{
|
||||||
char* tmp = realloc(str, size + 1);
|
char* tmp = realloc(str, size + 1);
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
{
|
{
|
||||||
puts("Error (re)allocating memory!");
|
puts("Error (re)allocating memory!");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
str = tmp;
|
str = tmp;
|
||||||
size++;
|
size++;
|
||||||
}
|
}
|
||||||
|
|
||||||
str[i] = c;
|
str[i] = c;
|
||||||
i++;
|
i++;
|
||||||
} while (c && c != '\n');
|
} while (c && c != '\n');
|
||||||
str[i] = '\0';
|
if (str[i - 1] != '\n') str[i - 1] = '\n';
|
||||||
|
str[i] = '\0';
|
||||||
|
|
||||||
return str;
|
// Sanitise stdin
|
||||||
|
while (c != '\n') c = (char)getchar();
|
||||||
|
return str;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user