You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言暴力破解程序异常求助:随机猜测结果不符合预期

C语言暴力破解程序问题排查与修复

1. 变量重复定义导致乱码

你在main开头定义了char guess[100];,但循环里又重新定义了一个同名的guess数组:

char guess[100] = {"\0"};

这俩是完全独立的变量——循环里的guess只在当前循环迭代里有效,迭代结束就失效了,你最后打印的其实是开头那个没初始化的guess,里面都是内存垃圾值,所以会出现乱码。

改法:删掉循环里的char guess[100] = {"\0"};,换成每次循环开始时清空开头的guess:

memset(guess, '\0', sizeof(guess));

或者更简单的guess[0] = '\0';,直接把字符串置为空。

2. 错误的字符复制导致非随机字符串

你用strcpy(letter, &letters[i]);拿随机字符,但&letters[i]是从第i个字符开始的整串字符(比如i=16时,就是从'q'到'z'所有字母),strcpy会把这一整串都复制到letter里,再拼到guess,这就是为什么输出是一串递增的字母,不是单个随机字符。

改法:直接给guess的对应位置赋值单个字符就行,不用绕strcpy和strcat:

int pass_len = strlen(pass);
for (int j = 0; j < pass_len; j++) {
    guess[j] = letters[rand() % 26];
}
guess[pass_len] = '\0'; // 手动加字符串结束符,避免乱码

如果非要用strcat,就得把单个字符做成合法的字符串:

char letter[2]; // 只存单个字符+结束符
letter[0] = letters[i];
letter[1] = '\0';
strcat(guess, letter);

3. 计数器未初始化导致次数错误

guesses变量定义时没给初始值,一开始是内存里的随机数,最后输出的猜测次数肯定不对。

改法:定义时直接初始化:

unsigned long guesses = 0;

4. 初始循环的无效比较

第一次进入while (strcmp(guess, pass) != 0)时,guess还没初始化,strcmp在比垃圾值,可能出意外。

改法:换成do-while循环,先生成第一次猜测再比较:

do {
    // 生成猜测的代码
    guesses++;
    printf("%s\n", guess);
} while (strcmp(guess, pass) != 0);

修正后的完整代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int main() {
    unsigned long guesses = 0;
    char guess[100];
    char pass[100];
    const char letters[26] = "abcdefghijklmnopqrstuvwxyz";
    srand(time(NULL));
    
    printf("\ninput your password lowercase letters only: ");
    scanf("%99s", pass);
    
    int pass_len = strlen(pass);
    do {
        memset(guess, '\0', sizeof(guess));
        for (int j = 0; j < pass_len; j++) {
            guess[j] = letters[rand() % 26];
        }
        printf("%s\n", guess);
        guesses++;
    } while (strcmp(guess, pass) != 0);
    
    printf("your guess was %s and was found in %lu guesses\n", guess, guesses);
    return 0;
}

现在输入「yes」,程序会输出长度为3的随机小写字母组合,直到猜中目标,不会再出现多余字符和递增字符串的问题。

内容的提问来源于stack exchange,提问作者user21391428

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:35:47