我有一个快速的问题。是否可以“随机化”我得到的输出?例如,在第一次运行中,我得到了“魔术数字1”,而当我再次运行它时,我得到了“魔术数字3”。我在其他地方找不到任何帮助。
#include <stdio.h>
int main() {
char *a = "Magic number 1\n";
char *b = "Magic number 2\n";
char *c = "Magic number 3\n";
printf("%s", b);
return 0;
}
我试图将代码编辑为
printf("%s", a||b);
但是||仅用于逻辑,对吧?
答案 0 :(得分:1)
||
根据逻辑OR语句的真值产生1或0的 int
。
语句printf("%s", a||b);
中发生的事情是值1
(由于要比较的字符串指针的地址非零,因此OR为true并返回1
)尝试作为指向以空字符结尾的字符串的指针进行访问。这是未定义的行为,很可能会崩溃(如果幸运的话)。
如果要从代码中的一组变量中打印随机字符串,则可以执行以下操作:
#include <stdlib.h>
#include <time.h>
// (in main())
srand((unsigned)time(NULL));
int r = rand()%3;
if(r == 0)
puts(a);
else if(r == 1)
puts(b);
else
puts(c);
答案 1 :(得分:1)
这样的事情呢? 您可以使用2D数组来代替为每个变量创建单独的变量。
int main() {
char arr[3][100] = {"Magic number 1\n", "Magic number 2\n", "Magic number 3\n"};
int i, range=3;
srand((unsigned)time(NULL));
i = rand()%range;
puts(arr[i]);
return 0;
}