我现在正在学习C语言,我是一个新手,很抱歉有任何简单的错误,我想做一个蛮力程序,你在控制台输入一个单词,然后C程序将随机猜测,并将它们与你输入的单词进行比较。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main() {
unsigned long guesses;
char guess[100];
char pass[100];
char letter[100];
const char letters[26] = "abcdefghijklmnopqrstuvwxyz";
srand(time(NULL));
printf("\ninput your password lowercase letters only: ");
scanf("%99s", pass);
while (strcmp(guess, pass) != 0) {
//reset guess
char guess[100] = {"\0"};
//choose a random number
//copy a random element from var letters
//concentrate the letter to the guess and repeat till its as long as the password
while (strlen(guess) < strlen(pass)) {
char i = rand() % 26;
strcpy(letter, &letters[i]);
strcat(guess, letter);
}
printf("%s\n", guess);
guesses++;
}
printf("your guess was %s and was found in %lu guesses", guess, guesses);
return 0;
}
控制台中的输出是我输入单词yes
时的输出
qrstuvwxyz�
efghijklmnopqrstuvwxyz�
efghijklmnopqrstuvwxyz�
stuvwxyz�
efghijklmnopqrstuvwxyz�
qrstuvwxyz�
bcdefghijklmnopqrstuvwxyz�
hijklmnopqrstuvwxyz�
qrstuvwxyz�
qrstuvwxyz�
我真的不知道它为什么要这样做,如果有人能帮助它,将非常感激
我尝试了许多不同的方法来添加字母的猜测,但无论我尝试它添加更多的字母,然后我需要和字母增量为1,而不是一个新的随机字符每次
1条答案
按热度按时间kpbpu0081#
测试您的代码并对其进行调整以使其正常工作,下面是代码的重构版本。
在这个经过调整的代码版本中需要注意的一些事项。
下面是程序使用“bell”条目进行猜测时终端的最后几行输出。
正如上面的评论所指出的,输入值越长,这种暴力破解方法花费的时间就越长。当我用五个字符的文字测试这个程序时,程序运行了很长时间,直到我手动停止程序。因此,在这个程序中,可能有一个上限测试添加到尝试的次数上。
无论如何,您可以给予这个重构的代码,看看它是否符合您的项目的精神。