gpt4 book ai didi

c - 从C中的数组中随机选择字符串

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:11 24 4
gpt4 key购买 nike

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

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

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

最佳答案

您已将 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. 传统上使用% 获取特定范围内的随机数不是很好。另见 Q13.16 How can I get random integers in a certain range? 来自 comp.lang.c FAQ。

  4. printf(random) 是危险的。如果您正在打印的字符串恰好包含 % 字符,则 printf 会出现错误(这可能是一个安全漏洞)。你应该总是喜欢 printf("%s", random)。由于您可能想要尾随换行符,因此它应该是 printf("%s\n", random) 或只是 puts(random)

关于c - 从C中的数组中随机选择字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26566186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com