c中的随机字符

时间:2015-12-17 17:38:19

标签: c random strcmp

我写了一个程序试图"猜测"一个词随机选择字符。但是,我的程序正在打印不在我的角色列表中的字符。这是怎么回事?

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

int main(){

    int index, i;
    time_t t;
    char characters[] = "bdefgir";
    char word[] = "friedberg";
    srand((unsigned)time(&t));
    char result[9] = {0};

    while(strcmp(result, word) != 0){

        for (i = 0; i < 9; i++) {
            index = rand() % 8;
            result[i] = characters[index];
        }
        printf("Result:\t%s\n", result);

    }

    return 0;

}

1 个答案:

答案 0 :(得分:2)

您的拼写错误变量wort应为word。此外,您必须拥有包含9个字符的result数组(例如您的单词"friedberg"),并以'\0'字符结尾(因此总字符数为10)。

正确的解决方案是:

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

int main() {

    int index, i;
    time_t t;
    char characters[] = "bdefirg";

    char word[] = "friedberg";

    srand((unsigned) time(&t));
    char result[10];
    result[9] = '\0';

    while (strcmp(result, word) != 0) {

        for (i = 0; i < 9; i++) {
            index = rand() % 7;
            result[i] = characters[index];
        }
        printf("Result:\t%s\n", result);

    }

    return 0;

}