随机在C打印什么字符串

问题描述 投票:-1回答:2

我有一个快速的问题。是否有可能“随机”的输出我得到的?例如在第一次运行时得到“幻数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);

但是||仅用于逻辑,是吗?

c random
2个回答
1
投票

||产生基于逻辑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);

1
投票

怎么样这样的事情?相反,为他们每个人创建单独的变量,你可以使用二维数组。

  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;
    }
© www.soinside.com 2019 - 2024. All rights reserved.