我有一个快速的问题。是否有可能“随机”的输出我得到的?例如在第一次运行时得到“幻数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);
但是||仅用于逻辑,是吗?
||
产生基于逻辑OR陈述的真实性的int
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);
怎么样这样的事情?相反,为他们每个人创建单独的变量,你可以使用二维数组。
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;
}