Я новичок, поэтому, если я пропущу что-то жизненно важное для кода, пожалуйста, прости меня, ха-ха. Я делаю программу, которая получает данные из консоли, которые говорят, сколько символов будет использоваться, символы (отдельные буквы), а затем, как долго вы хотите, чтобы пароль был. Я чувствую, что я довольно близко, но каждый раз, когда я запускаю программу, кажется, что она генерирует случайный набор букв, и я не могу следовать за ним.
Вот мой код, включая основную функцию.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
int generatePassword(char* characters[], int i, char s[], int numCharacters, int passwordLength) {
if (i==0) {
printf("%s\n", s);
return 0;
}
for (int j = 0; j < passwordLength; j++) {
strcat(s, characters[j]);
generatePassword(characters, i-1, s, numCharacters, passwordLength);
}
return 0;
}
void homeFunction(char* characters[], int numCharacters, int passwordLength) {
for (int i = 1; i <= numCharacters; i++) {
char s[MAX] = "";
int c = generatePassword(characters, i, s, numCharacters, passwordLength);
}
}
int main (int argc, char *argv[]) {
if (argc < 2) {
printf("ERROR: Program did not execute due to lack of arguments.\n");
return -1;
}
int numCharacters;
numCharacters = atoi(argv[1]);
int passwordLength;
passwordLength = atoi(argv[numCharacters+2]);
for (int i = 0; i < numCharacters; i++) {
if (strlen(argv[i+1]) > 1) {
printf("ERROR: You can only input one character at a time.\n");
return -1;
}
}
if (argv != numCharacters + 3) {
printf("ERROR: Invalid number of arguments.\n");
return -1;
}
char *charArray[numCharacters];
charArray[numCharacters] = (char*)malloc(numCharacters * sizeof(char));
for (int i = 0; i < numCharacters; i++) {
charArray[i] = argv[i+2];
}
homeFunction(charArray, numCharacters, passwordLength);
return 0;
}
Теоретически, если пользователь запустил программу с "./NAME 2 ab 2", результат должен быть
a
b
aa
ab
ba
bb
Это мой текущий вывод. Как я могу сделать так, чтобы это выглядело так, как показано выше?
a
ab
abaa
abaab
abaabba
abaabbab