#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); } }