我有一个快速的问题。是否可以“随机化”我得到的输出?例如,在第一次运行时,我得到了“Magic number 1”,当我再次运行时,我会得到“Magic number 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);
但是|| 只用于逻辑,对吗?
||
int
根据逻辑 OR 语句的真值产生1 或 0。
语句中发生的情况printf("%s", a||b);
是该值1
(因为被比较的字符串指针的地址非零,因此 OR 为真并返回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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句