我的程序的目标是打印用户可以输入的所有字符组合,只要它们不超过最大长度即可。我能够用字符正确地填充数组,显示输入的字符数,以及字符串的最大长度(由用户输入)。但是,功能不能按预期打印。理论上,如果用户输入的最大长度为2的2个字符(a,b),则程序应输出此字符...
a
b
aa
ab
ba
bb
取而代之的是,我的代码正在输出此内容,我不知道为什么...
a
ab
以下是我的两个功能。我的主要功能是获取用户输入的字符数,字符数组以及要输出的字符串的最大长度。之后,它将调用generatePassword函数。任何帮助,将不胜感激!
int crack(char *characters[], int i, char s[], int numCharacters, int passwordLength) {
if (i==0) {
printf("%s\n", s);
return 0;
}
for (int j = 0; j < numCharacters; j++) {
char string[MAX];
strcpy(string, strcat(s, characters[j]));
crack(characters, i-1, string, numCharacters, passwordLength);
}
return 0;
}
void generatePassword(char* characters[], int numCharacters, int passwordLength) {
for (int i = 1; i < passwordLength; i++) {
char s[MAX] = "";
int num = crack(characters, i, s, numCharacters, passwordLength);
}
}