从C中的数组中随机选取字符串

时间:2014-10-25 19:09:24

标签: c arrays random

void pick() {
    char* words[2];
    words[0] = "blah";
    words[1] = "hmm";

    char random;
    srand(time(NULL));
    random = words[rand() % 2];
    printf(random);
    return;
}

这是我的代码,我想从单词数组中随机选择一个单词,但是当我运行它时,编译器说:[警告]赋值从指针生成整数而没有强制转换[默认启用]

1 个答案:

答案 0 :(得分:4)

您已将random声明为char,这是一个单字节整数值。您正在为其分配words数组中的元素,并且每个元素都是char*类型。因此,您在尝试将char*分配给整数值时收到错误。

您的意思是将random声明为char*

我会指出有关您的代码的其他事项:

void pick() {
    char* words[2]; // 1
    words[0] = "blah";
    words[1] = "hmm";

    char random; // 2
    srand(time(NULL));
    random = words[rand() % 2]; // 3
    printf(random); // 4
    return;
}
  1. 这应该被声明为const char*的数组,因为你要为它分配字符串文字(不可变)。

  2. random也应声明为const char*

  3. 使用%获取特定范围内的随机数传统上并不是很好。另请参阅comp.lang.c常见问题解答中的Q13.16 How can I get random integers in a certain range?

  4. printf(random)很危险。如果您要打印的字符串恰好包含%个字符,则printf会出现行为异常(这可能是一个安全漏洞)。你总是应该选择printf("%s", random)。由于你可能想要一个尾随换行符,它应该是printf("%s\n", random)puts(random)