From 42d5b1fea858f7dc2ef62c021ce30b0924991b88 Mon Sep 17 00:00:00 2001 From: benstrb Date: Thu, 30 Oct 2025 15:05:16 +0100 Subject: [PATCH] learning experience --- password_gen.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 password_gen.c diff --git a/password_gen.c b/password_gen.c new file mode 100644 index 0000000..532a3ef --- /dev/null +++ b/password_gen.c @@ -0,0 +1,59 @@ +#include +#include +#include +#include + +int str_to_int(char* str) { + int output = 0; + + for (int i = 0; i < strlen(str); i++) { + output *= 10; + output += str[i] - '0'; + } + + return output; +} + +void invalid_args(int argc) { + if (argc < 4 && argc > 5) { + printf("nuhuh\n"); + exit(1); + } +} + +int random_len(int min_length, int max_length) { + return rand() % (max_length - min_length + 1) + min_length; +} + +char* random_str(int length, char* symbols) { + char* str = malloc(sizeof(char) * (length + 1)); + + for (int i = 0; i < length; i++) { + int index = rand() % strlen(symbols); + str[i] = symbols[index]; + } + + str[length] = '\0'; + + return str; +} + +int main(int argc, char** argv) { + invalid_args(argc); + srand(time(NULL)); + + int min_length = str_to_int(argv[1]); + int max_length = str_to_int(argv[2]); + + int length = random_len(min_length, max_length); + + if (argc != 4) { + char* password = random_str(length, argv[4]); + puts(password); + free(password); + } else { + char* password = random_str(length, argv[3]); + puts(password); + free(password); + } +}